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 bt...@apache.org on 2015/06/29 10:21:14 UTC
svn commit: r1688109 [4/6] - in /james/mailbox/trunk:
caching/src/main/java/org/apache/james/mailbox/caching/
caching/src/main/java/org/apache/james/mailbox/caching/guava/
cassandra/src/main/java/org/apache/james/mailbox/cassandra/
cassandra/src/main/j...
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java Mon Jun 29 08:21:12 2015
@@ -25,11 +25,12 @@ import javax.persistence.PersistenceExce
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.store.mail.AbstractLockingUidProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-public class JPAUidProvider extends AbstractLockingUidProvider<Long>{
+public class JPAUidProvider extends AbstractLockingUidProvider<JPAId> {
private EntityManagerFactory factory;
@@ -40,12 +41,12 @@ public class JPAUidProvider extends Abst
@Override
- public long lastUid(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ public long lastUid(MailboxSession session, Mailbox<JPAId> mailbox) throws MailboxException {
EntityManager manager = null;
try {
manager = factory.createEntityManager();
manager.getTransaction().begin();
- long uid = (Long) manager.createNamedQuery("findLastUid").setParameter("idParam", mailbox.getMailboxId()).getSingleResult();
+ long uid = (Long) manager.createNamedQuery("findLastUid").setParameter("idParam", mailbox.getMailboxId().getRawId()).getSingleResult();
manager.getTransaction().commit();
return uid;
} catch (PersistenceException e) {
@@ -61,12 +62,12 @@ public class JPAUidProvider extends Abst
}
@Override
- protected long lockedNextUid(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ protected long lockedNextUid(MailboxSession session, Mailbox<JPAId> mailbox) throws MailboxException {
EntityManager manager = null;
try {
manager = factory.createEntityManager();
manager.getTransaction().begin();
- JPAMailbox m = manager.find(JPAMailbox.class, mailbox.getMailboxId());
+ JPAMailbox m = manager.find(JPAMailbox.class, mailbox.getMailboxId().getRawId());
long uid = m.consumeUid();
manager.persist(m);
manager.getTransaction().commit();
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java Mon Jun 29 08:21:12 2015
@@ -27,6 +27,7 @@ import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.SimpleMailboxACL;
@@ -58,7 +59,7 @@ import org.apache.james.mailbox.store.ma
@NamedQuery(name="findLastUid",
query="SELECT mailbox.lastUid FROM Mailbox mailbox WHERE mailbox.mailboxId = :idParam")
})
-public class JPAMailbox implements Mailbox<Long> {
+public class JPAMailbox implements Mailbox<JPAId> {
private static final String TAB = " ";
@@ -113,8 +114,8 @@ public class JPAMailbox implements Mailb
/**
* @see org.apache.james.mailbox.store.mail.model.Mailbox#getMailboxId()
*/
- public Long getMailboxId() {
- return mailboxId;
+ public JPAId getMailboxId() {
+ return JPAId.of(mailboxId);
}
/**
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMessage.java Mon Jun 29 08:21:12 2015
@@ -38,6 +38,7 @@ import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.jpa.mail.model.JPAProperty;
import org.apache.james.mailbox.jpa.mail.model.JPAUserFlag;
@@ -98,7 +99,7 @@ import org.apache.openjpa.persistence.jd
query="DELETE FROM Message message")
})
@MappedSuperclass
-public abstract class AbstractJPAMessage extends AbstractMessage<Long> {
+public abstract class AbstractJPAMessage extends AbstractMessage<JPAId> {
@@ -309,7 +310,7 @@ public abstract class AbstractJPAMessage
public int hashCode() {
final int PRIME = 31;
int result = 1;
- result = PRIME * result + (int) (getMailboxId() ^ (getMailboxId() >>> 32));
+ result = PRIME * result + (int) (getMailboxId().getRawId() ^ (getMailboxId().getRawId() >>> 32));
result = PRIME * result + (int) (uid ^ (uid >>> 32));
return result;
}
@@ -409,7 +410,7 @@ public abstract class AbstractJPAMessage
/**
* @see org.apache.james.mailbox.store.mail.model.Message#getMailboxId()
*/
- public Long getMailboxId() {
+ public JPAId getMailboxId() {
return getMailbox().getMailboxId();
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java Mon Jun 29 08:21:12 2015
@@ -25,6 +25,7 @@ import org.apache.james.mailbox.MailboxS
import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.JPAMailboxManager;
import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
import org.apache.james.mailbox.jpa.mail.model.openjpa.EncryptDecryptHelper;
@@ -66,8 +67,8 @@ public class OpenJPAMailboxManager exten
}
@Override
- protected StoreMessageManager<Long> createMessageManager(Mailbox<Long> mailboxRow, MailboxSession session) throws MailboxException {
- StoreMessageManager<Long> result = new OpenJPAMessageManager(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(), getLocker(), mailboxRow, feature, getAclResolver(), getGroupMembershipResolver());
+ protected StoreMessageManager<JPAId> createMessageManager(Mailbox<JPAId> mailboxRow, MailboxSession session) throws MailboxException {
+ StoreMessageManager<JPAId> result = new OpenJPAMessageManager(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(), getLocker(), mailboxRow, feature, getAclResolver(), getGroupMembershipResolver());
return result;
}
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java Mon Jun 29 08:21:12 2015
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.MailboxP
import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.JPAMessageManager;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAEncryptedMessage;
@@ -52,19 +53,24 @@ public class OpenJPAMessageManager exten
Encryption
}
- public OpenJPAMessageManager(MailboxSessionMapperFactory<Long> mapperFactory, MessageSearchIndex<Long> index,
- MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException {
+ public OpenJPAMessageManager(MailboxSessionMapperFactory<JPAId> mapperFactory,
+ MessageSearchIndex<JPAId> index,MailboxEventDispatcher<JPAId> dispatcher,
+ MailboxPathLocker locker, Mailbox<JPAId> mailbox, MailboxACLResolver aclResolver,
+ GroupMembershipResolver groupMembershipResolver) throws MailboxException {
this(mapperFactory, index, dispatcher, locker, mailbox, AdvancedFeature.None, aclResolver, groupMembershipResolver);
}
- public OpenJPAMessageManager(MailboxSessionMapperFactory<Long> mapperFactory, MessageSearchIndex<Long> index,
- MailboxEventDispatcher<Long> dispatcher, MailboxPathLocker locker, Mailbox<Long> mailbox, final AdvancedFeature f, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException {
+ public OpenJPAMessageManager(MailboxSessionMapperFactory<JPAId> mapperFactory,
+ MessageSearchIndex<JPAId> index, MailboxEventDispatcher<JPAId> dispatcher,
+ MailboxPathLocker locker, Mailbox<JPAId> mailbox, final AdvancedFeature f,
+ MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException {
+
super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver);
this.feature = f;
}
@Override
- protected Message<Long> createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder) throws MailboxException {
+ protected Message<JPAId> createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder) throws MailboxException {
int headerEnd = bodyStartOctet -2;
if (headerEnd < 0) {
headerEnd = 0;
Modified: james/mailbox/trunk/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java (original)
+++ james/mailbox/trunk/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java Mon Jun 29 08:21:12 2015
@@ -57,6 +57,7 @@ import org.apache.james.mailbox.model.Se
import org.apache.james.mailbox.model.SearchQuery.NumericRange;
import org.apache.james.mailbox.model.SearchQuery.UidCriterion;
import org.apache.james.mailbox.store.mail.MessageMapperFactory;
+import org.apache.james.mailbox.store.mail.model.MailboxId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
@@ -114,7 +115,7 @@ import org.apache.lucene.util.Version;
* @param <Id>
*/
-public class LuceneMessageSearchIndex<Id> extends ListeningMessageSearchIndex<Id>{
+public class LuceneMessageSearchIndex<Id extends MailboxId> extends ListeningMessageSearchIndex<Id> {
private final static Date MAX_DATE;
private final static Date MIN_DATE;
@@ -408,7 +409,7 @@ public class LuceneMessageSearchIndex<Id
try {
searcher = new IndexSearcher(IndexReader.open(writer, true));
BooleanQuery query = new BooleanQuery();
- query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().toString())), BooleanClause.Occur.MUST);
+ query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
// Not return flags documents
query.add(new PrefixQuery(new Term(FLAGS_FIELD, "")), BooleanClause.Occur.MUST_NOT);
List<Criterion> crits = searchQuery.getCriterias();
@@ -449,11 +450,11 @@ public class LuceneMessageSearchIndex<Id
private Document createMessageDocument(final MailboxSession session, final Message<?> membership) throws MailboxException{
final Document doc = new Document();
// TODO: Better handling
- doc.add(new Field(MAILBOX_ID_FIELD, membership.getMailboxId().toString().toUpperCase(Locale.ENGLISH), Store.YES, Index.NOT_ANALYZED));
+ doc.add(new Field(MAILBOX_ID_FIELD, membership.getMailboxId().serialize().toUpperCase(Locale.ENGLISH), Store.YES, Index.NOT_ANALYZED));
doc.add(new NumericField(UID_FIELD,Store.YES, true).setLongValue(membership.getUid()));
// create an unqiue key for the document which can be used later on updates to find the document
- doc.add(new Field(ID_FIELD, membership.getMailboxId().toString().toUpperCase(Locale.ENGLISH) +"-" + Long.toString(membership.getUid()), Store.YES, Index.NOT_ANALYZED));
+ doc.add(new Field(ID_FIELD, membership.getMailboxId().serialize().toUpperCase(Locale.ENGLISH) +"-" + Long.toString(membership.getUid()), Store.YES, Index.NOT_ANALYZED));
doc.add(new Field(INTERNAL_DATE_FIELD_YEAR_RESOLUTION, DateTools.dateToString(membership.getInternalDate(), DateTools.Resolution.YEAR), Store.NO, Index.NOT_ANALYZED));
doc.add(new Field(INTERNAL_DATE_FIELD_MONTH_RESOLUTION, DateTools.dateToString(membership.getInternalDate(), DateTools.Resolution.MONTH), Store.NO, Index.NOT_ANALYZED));
@@ -892,7 +893,7 @@ public class LuceneMessageSearchIndex<Id
query.add(bQuery, BooleanClause.Occur.MUST);
}
- query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().toString())), BooleanClause.Occur.MUST);
+ query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
IndexSearcher searcher = null;
@@ -1128,7 +1129,7 @@ public class LuceneMessageSearchIndex<Id
for (int i = 0; i < crits.size(); i++) {
conQuery.add(createQuery(crits.get(i), mailbox, recentUids), BooleanClause.Occur.SHOULD);
}
- nor.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().toString())), BooleanClause.Occur.MUST);
+ nor.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
nor.add(conQuery, BooleanClause.Occur.MUST_NOT);
return nor;
@@ -1205,7 +1206,7 @@ public class LuceneMessageSearchIndex<Id
try {
IndexSearcher searcher = new IndexSearcher(IndexReader.open(writer, true));
BooleanQuery query = new BooleanQuery();
- query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().toString())), BooleanClause.Occur.MUST);
+ query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
query.add(createQuery(range), BooleanClause.Occur.MUST);
query.add( new PrefixQuery(new Term(FLAGS_FIELD, "")), BooleanClause.Occur.MUST);
@@ -1237,8 +1238,8 @@ public class LuceneMessageSearchIndex<Id
*/
private Document createFlagsDocument(Message<?> message) {
Document doc = new Document();
- doc.add(new Field(ID_FIELD, "flags-" + message.getMailboxId().toString() +"-" + Long.toString(message.getUid()), Store.YES, Index.NOT_ANALYZED));
- doc.add(new Field(MAILBOX_ID_FIELD, message.getMailboxId().toString(), Store.YES, Index.NOT_ANALYZED));
+ doc.add(new Field(ID_FIELD, "flags-" + message.getMailboxId().serialize() +"-" + Long.toString(message.getUid()), Store.YES, Index.NOT_ANALYZED));
+ doc.add(new Field(MAILBOX_ID_FIELD, message.getMailboxId().serialize(), Store.YES, Index.NOT_ANALYZED));
doc.add(new NumericField(UID_FIELD,Store.YES, true).setLongValue(message.getUid()));
indexFlags(doc, message.createFlags());
@@ -1286,7 +1287,7 @@ public class LuceneMessageSearchIndex<Id
*/
public void delete(MailboxSession session, Mailbox<Id> mailbox, MessageRange range) throws MailboxException {
BooleanQuery query = new BooleanQuery();
- query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().toString())), BooleanClause.Occur.MUST);
+ query.add(new TermQuery(new Term(MAILBOX_ID_FIELD, mailbox.getMailboxId().serialize())), BooleanClause.Occur.MUST);
query.add(createQuery(range), BooleanClause.Occur.MUST);
try {
Modified: james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java (original)
+++ james/mailbox/trunk/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java Mon Jun 29 08:21:12 2015
@@ -42,6 +42,7 @@ import org.apache.james.mailbox.model.Se
import org.apache.james.mailbox.model.SearchQuery.Sort.SortClause;
import org.apache.james.mailbox.store.MessageBuilder;
import org.apache.james.mailbox.store.SimpleMailboxMembership;
+import org.apache.james.mailbox.store.TestId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.lucene.store.RAMDirectory;
@@ -50,8 +51,8 @@ import org.junit.Test;
public class LuceneMessageSearchIndexTest {
- private LuceneMessageSearchIndex<Long> index;
-
+ private LuceneMessageSearchIndex<TestId> index;
+
private SimpleMailbox mailbox = new SimpleMailbox(0);
private SimpleMailbox mailbox2 = new SimpleMailbox(1);
private SimpleMailbox mailbox3 = new SimpleMailbox(2);
@@ -69,7 +70,7 @@ public class LuceneMessageSearchIndexTes
+ "It has " + RHUBARD + ".\r\n" + "It has " + CUSTARD + ".\r\n"
+ "It needs naught else.\r\n";
- Message<Long> row;
+ Message<TestId> row;
protected boolean useLenient() {
return true;
@@ -77,7 +78,7 @@ public class LuceneMessageSearchIndexTes
@Before
public void setUp() throws Exception {
- index = new LuceneMessageSearchIndex<Long>(null, new RAMDirectory(), true, useLenient());
+ index = new LuceneMessageSearchIndex<TestId>(null, new RAMDirectory(), true, useLenient());
index.setEnableSuffixMatch(true);
Map<String, String> headersSubject = new HashMap<String, String>();
headersSubject.put("Subject", "test (fwd)");
@@ -704,14 +705,14 @@ public class LuceneMessageSearchIndexTes
assertFalse(it4.hasNext());
}
- private final class SimpleMailbox implements Mailbox<Long> {
- private long id;
+ private final class SimpleMailbox implements Mailbox<TestId> {
+ private TestId id;
public SimpleMailbox(long id) {
- this.id = id;
+ this.id = TestId.of(id);
}
- public Long getMailboxId() {
+ public TestId getMailboxId() {
return id;
}
@@ -732,7 +733,7 @@ public class LuceneMessageSearchIndexTes
}
public String getName() {
- return Long.toString(id);
+ return id.serialize();
}
public void setName(String name) {
Added: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java?rev=1688109&view=auto
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java (added)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirId.java Mon Jun 29 08:21:12 2015
@@ -0,0 +1,71 @@
+/****************************************************************
+ * 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 org.apache.james.mailbox.store.mail.model.MailboxId;
+
+public class MaildirId implements MailboxId {
+
+ public static MaildirId of(int id) {
+ return new MaildirId(id);
+ }
+
+ private final int id;
+
+ private MaildirId(int id) {
+ this.id = id;
+ }
+
+ public int getRawId() {
+ return id;
+ }
+
+ @Override
+ public String serialize() {
+ return String.valueOf(id);
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(id);
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + id;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MaildirId other = (MaildirId) obj;
+ if (id != other.id)
+ return false;
+ return true;
+ }
+
+}
\ No newline at end of file
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java Mon Jun 29 08:21:12 2015
@@ -30,7 +30,7 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.user.SubscriptionMapper;
public class MaildirMailboxSessionMapperFactory extends
- MailboxSessionMapperFactory<Integer> {
+ MailboxSessionMapperFactory<MaildirId> {
private final MaildirStore store;
@@ -41,13 +41,13 @@ public class MaildirMailboxSessionMapper
@Override
- public MailboxMapper<Integer> createMailboxMapper(MailboxSession session)
+ public MailboxMapper<MaildirId> createMailboxMapper(MailboxSession session)
throws MailboxException {
return new MaildirMailboxMapper(store, session);
}
@Override
- public MessageMapper<Integer> createMessageMapper(MailboxSession session)
+ public MessageMapper<MaildirId> createMessageMapper(MailboxSession session)
throws MailboxException {
return new MaildirMessageMapper(session, store);
}
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=1688109&r1=1688108&r2=1688109&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 Mon Jun 29 08:21:12 2015
@@ -34,7 +34,7 @@ import org.apache.james.mailbox.store.ma
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>{
+public class MaildirStore implements UidProvider<MaildirId>, ModSeqProvider<MaildirId> {
public static final String PATH_USER = "%user";
public static final String PATH_DOMAIN = "%domain";
@@ -78,7 +78,7 @@ public class MaildirStore implements Uid
* @param mailbox
* @return The MaildirFolder
*/
- public MaildirFolder createMaildirFolder(Mailbox<Integer> mailbox) {
+ public MaildirFolder createMaildirFolder(Mailbox<MaildirId> mailbox) {
MaildirFolder mf = new MaildirFolder(getFolderName(mailbox), new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), locker);
mf.setMessageNameStrictParse(isMessageNameStrictParse());
return mf;
@@ -93,7 +93,7 @@ public class MaildirStore implements Uid
* @return The Mailbox object populated with data from the file system
* @throws MailboxException If the mailbox folder doesn't exist or can't be read
*/
- public Mailbox<Integer> loadMailbox(MailboxSession session, File root, String namespace, String user, String folderName) throws MailboxException {
+ public Mailbox<MaildirId> loadMailbox(MailboxSession session, File root, String namespace, String user, String folderName) throws MailboxException {
String mailboxName = getMailboxNameFromFolderName(folderName);
return loadMailbox(session, new File(root, folderName), new MailboxPath(namespace, user, mailboxName));
}
@@ -105,7 +105,7 @@ public class MaildirStore implements Uid
* @throws MailboxNotFoundException If the mailbox folder doesn't exist
* @throws MailboxException If the mailbox folder can't be read
*/
- public Mailbox<Integer> loadMailbox(MailboxSession session, MailboxPath mailboxPath)
+ public Mailbox<MaildirId> loadMailbox(MailboxSession session, MailboxPath mailboxPath)
throws MailboxNotFoundException, MailboxException {
MaildirFolder folder = new MaildirFolder(getFolderName(mailboxPath), mailboxPath, locker);
folder.setMessageNameStrictParse(isMessageNameStrictParse());
@@ -121,11 +121,11 @@ public class MaildirStore implements Uid
* @return The Mailbox object populated with data from the file system
* @throws MailboxException If the mailbox folder doesn't exist or can't be read
*/
- private Mailbox<Integer> loadMailbox(MailboxSession session, File mailboxFile, MailboxPath mailboxPath) throws MailboxException {
+ private Mailbox<MaildirId> loadMailbox(MailboxSession session, File mailboxFile, MailboxPath mailboxPath) throws MailboxException {
MaildirFolder folder = new MaildirFolder(mailboxFile.getAbsolutePath(), mailboxPath, locker);
folder.setMessageNameStrictParse(isMessageNameStrictParse());
try {
- Mailbox<Integer> loadedMailbox = new SimpleMailbox<Integer>(mailboxPath, folder.getUidValidity());
+ Mailbox<MaildirId> loadedMailbox = new SimpleMailbox<MaildirId>(mailboxPath, folder.getUidValidity());
loadedMailbox.setACL(folder.getACL(session));
return loadedMailbox;
} catch (IOException e) {
@@ -224,7 +224,7 @@ public class MaildirStore implements Uid
* @param mailbox The mailbox
* @return The absolute path to the folder containing the mailbox
*/
- public String getFolderName(Mailbox<Integer> mailbox) {
+ public String getFolderName(Mailbox<MaildirId> mailbox) {
return getFolderName(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName());
}
@@ -241,7 +241,7 @@ public class MaildirStore implements Uid
* @see org.apache.james.mailbox.store.mail.UidProvider#nextUid(org.apache.james.mailbox.MailboxSession, org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public long nextUid(MailboxSession session, Mailbox<Integer> mailbox) throws MailboxException {
+ public long nextUid(MailboxSession session, Mailbox<MaildirId> mailbox) throws MailboxException {
try {
return createMaildirFolder(mailbox).getLastUid(session) +1;
} catch (MailboxException e) {
@@ -250,12 +250,12 @@ public class MaildirStore implements Uid
}
@Override
- public long nextModSeq(MailboxSession session, Mailbox<Integer> mailbox) throws MailboxException {
+ public long nextModSeq(MailboxSession session, Mailbox<MaildirId> mailbox) throws MailboxException {
return System.currentTimeMillis();
}
@Override
- public long highestModSeq(MailboxSession session, Mailbox<Integer> mailbox) throws MailboxException {
+ public long highestModSeq(MailboxSession session, Mailbox<MaildirId> mailbox) throws MailboxException {
try {
return createMaildirFolder(mailbox).getHighestModSeq();
} catch (IOException e) {
@@ -264,7 +264,7 @@ public class MaildirStore implements Uid
}
@Override
- public long lastUid(MailboxSession session, Mailbox<Integer> mailbox) throws MailboxException {
+ public long lastUid(MailboxSession session, Mailbox<MaildirId> mailbox) throws MailboxException {
return createMaildirFolder(mailbox).getLastUid(session);
}
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java Mon Jun 29 08:21:12 2015
@@ -32,6 +32,7 @@ import org.apache.james.mailbox.exceptio
import org.apache.james.mailbox.exception.MailboxExistsException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.maildir.MaildirFolder;
+import org.apache.james.mailbox.maildir.MaildirId;
import org.apache.james.mailbox.maildir.MaildirMessageName;
import org.apache.james.mailbox.maildir.MaildirStore;
import org.apache.james.mailbox.model.MailboxACL;
@@ -42,7 +43,7 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
-public class MaildirMailboxMapper extends NonTransactionalMapper implements MailboxMapper<Integer> {
+public class MaildirMailboxMapper extends NonTransactionalMapper implements MailboxMapper<MaildirId> {
/**
* The {@link MaildirStore} the mailboxes reside in
@@ -52,7 +53,7 @@ public class MaildirMailboxMapper extend
/**
* A request-scoped list of mailboxes in order to refer to them via id
*/
- private ArrayList<Mailbox<Integer>> mailboxCache = new ArrayList<Mailbox<Integer>>();
+ private ArrayList<Mailbox<MaildirId>> mailboxCache = new ArrayList<Mailbox<MaildirId>>();
private final MailboxSession session;
@@ -65,7 +66,7 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#delete(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public void delete(Mailbox<Integer> mailbox) throws MailboxException {
+ public void delete(Mailbox<MaildirId> mailbox) throws MailboxException {
String folderName = maildirStore.getFolderName(mailbox);
File folder = new File(folderName);
@@ -106,9 +107,9 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxByPath(org.apache.james.mailbox.model.MailboxPath)
*/
@Override
- public Mailbox<Integer> findMailboxByPath(MailboxPath mailboxPath)
+ public Mailbox<MaildirId> findMailboxByPath(MailboxPath mailboxPath)
throws MailboxException, MailboxNotFoundException {
- Mailbox<Integer> mailbox = maildirStore.loadMailbox(session, mailboxPath);
+ Mailbox<MaildirId> mailbox = maildirStore.loadMailbox(session, mailboxPath);
return cacheMailbox(mailbox);
}
@@ -116,22 +117,22 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(org.apache.james.mailbox.model.MailboxPath)
*/
@Override
- public List<Mailbox<Integer>> findMailboxWithPathLike(MailboxPath mailboxPath)
+ public List<Mailbox<MaildirId>> findMailboxWithPathLike(MailboxPath mailboxPath)
throws MailboxException {
final Pattern searchPattern = Pattern.compile("[" + MaildirStore.maildirDelimiter + "]"
+ mailboxPath.getName().replace(".", "\\.").replace(MaildirStore.WILDCARD, ".*"));
FilenameFilter filter = MaildirMessageName.createRegexFilter(searchPattern);
File root = maildirStore.getMailboxRootForUser(mailboxPath.getUser());
File[] folders = root.listFiles(filter);
- ArrayList<Mailbox<Integer>> mailboxList = new ArrayList<Mailbox<Integer>>();
+ ArrayList<Mailbox<MaildirId>> mailboxList = new ArrayList<Mailbox<MaildirId>>();
for (File folder : folders)
if (folder.isDirectory()) {
- Mailbox<Integer> mailbox = maildirStore.loadMailbox(session, root, mailboxPath.getNamespace(), mailboxPath.getUser(), folder.getName());
+ Mailbox<MaildirId> mailbox = maildirStore.loadMailbox(session, root, mailboxPath.getNamespace(), mailboxPath.getUser(), folder.getName());
mailboxList.add(cacheMailbox(mailbox));
}
// INBOX is in the root of the folder
if (Pattern.matches(mailboxPath.getName().replace(MaildirStore.WILDCARD, ".*"), MailboxConstants.INBOX)) {
- Mailbox<Integer> mailbox = maildirStore.loadMailbox(session, root, mailboxPath.getNamespace(), mailboxPath.getUser(), "");
+ Mailbox<MaildirId> mailbox = maildirStore.loadMailbox(session, root, mailboxPath.getNamespace(), mailboxPath.getUser(), "");
mailboxList.add(0, cacheMailbox(mailbox));
}
return mailboxList;
@@ -141,9 +142,9 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#hasChildren(org.apache.james.mailbox.store.mail.model.Mailbox, char)
*/
@Override
- public boolean hasChildren(Mailbox<Integer> mailbox, char delimiter) throws MailboxException, MailboxNotFoundException {
+ public boolean hasChildren(Mailbox<MaildirId> mailbox, char delimiter) throws MailboxException, MailboxNotFoundException {
String searchString = mailbox.getName() + MaildirStore.maildirDelimiter + MaildirStore.WILDCARD;
- List<Mailbox<Integer>> mailboxes = findMailboxWithPathLike(
+ List<Mailbox<MaildirId>> mailboxes = findMailboxWithPathLike(
new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), searchString));
return (mailboxes.size() > 0);
}
@@ -152,9 +153,9 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#save(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public void save(Mailbox<Integer> mailbox) throws MailboxException {
+ public void save(Mailbox<MaildirId> mailbox) throws MailboxException {
try {
- Mailbox<Integer> originalMailbox = getCachedMailbox(mailbox.getMailboxId());
+ Mailbox<MaildirId> originalMailbox = getCachedMailbox(mailbox.getMailboxId());
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
// equals with null check
if (originalMailbox.getName() == null ? mailbox.getName() != null : !originalMailbox.getName().equals(mailbox.getName())) {
@@ -228,10 +229,10 @@ public class MaildirMailboxMapper extend
* @see org.apache.james.mailbox.store.mail.MailboxMapper#list()
*/
@Override
- public List<Mailbox<Integer>> list() throws MailboxException {
+ public List<Mailbox<MaildirId>> list() throws MailboxException {
File maildirRoot = maildirStore.getMaildirRoot();
- List<Mailbox<Integer>> mailboxList = new ArrayList<Mailbox<Integer>>();
+ List<Mailbox<MaildirId>> mailboxList = new ArrayList<Mailbox<MaildirId>>();
if (maildirStore.getMaildirLocation().endsWith("/" + MaildirStore.PATH_FULLUSER)) {
File[] users = maildirRoot.listFiles();
@@ -262,10 +263,10 @@ public class MaildirMailboxMapper extend
* @param mailbox The mailbox to cache
* @return The id of the cached mailbox
*/
- private Mailbox<Integer> cacheMailbox(Mailbox<Integer> mailbox) {
- mailboxCache.add(new SimpleMailbox<Integer>(mailbox));
+ private Mailbox<MaildirId> cacheMailbox(Mailbox<MaildirId> mailbox) {
+ mailboxCache.add(new SimpleMailbox<MaildirId>(mailbox));
int id = mailboxCache.size() - 1;
- ((SimpleMailbox<Integer>) mailbox).setMailboxId(id);
+ ((SimpleMailbox<MaildirId>) mailbox).setMailboxId(MaildirId.of(id));
return mailbox;
}
@@ -275,17 +276,17 @@ public class MaildirMailboxMapper extend
* @return The mailbox
* @throws MailboxNotFoundException If the mailboxId is not in the cache
*/
- private Mailbox<Integer> getCachedMailbox(Integer mailboxId) throws MailboxNotFoundException {
+ private Mailbox<MaildirId> getCachedMailbox(MaildirId mailboxId) throws MailboxNotFoundException {
if (mailboxId == null)
throw new MailboxNotFoundException("null");
try {
- return mailboxCache.get(mailboxId);
+ return mailboxCache.get(mailboxId.getRawId());
} catch (IndexOutOfBoundsException e) {
throw new MailboxNotFoundException(String.valueOf(mailboxId));
}
}
- private void visitUsersForMailboxList(File domain, File[] users, List<Mailbox<Integer>> mailboxList) throws MailboxException {
+ private void visitUsersForMailboxList(File domain, File[] users, List<Mailbox<MaildirId>> mailboxList) throws MailboxException {
String userName = null;
@@ -327,7 +328,7 @@ public class MaildirMailboxMapper extend
}
@Override
- public void updateACL(Mailbox<Integer> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
+ public void updateACL(Mailbox<MaildirId> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
MailboxACL newACL = mailbox.getACL().apply(mailboxACLCommand);
folder.setACL(session, newACL);
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java Mon Jun 29 08:21:12 2015
@@ -38,6 +38,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.maildir.MaildirFolder;
+import org.apache.james.mailbox.maildir.MaildirId;
import org.apache.james.mailbox.maildir.MaildirMessageName;
import org.apache.james.mailbox.maildir.MaildirStore;
import org.apache.james.mailbox.maildir.mail.model.MaildirMessage;
@@ -51,7 +52,7 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
-public class MaildirMessageMapper extends AbstractMessageMapper<Integer> {
+public class MaildirMessageMapper extends AbstractMessageMapper<MaildirId> {
private final MaildirStore maildirStore;
private final static int BUF_SIZE = 2048;
@@ -65,7 +66,7 @@ public class MaildirMessageMapper extend
* @see org.apache.james.mailbox.store.mail.MessageMapper#countMessagesInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public long countMessagesInMailbox(Mailbox<Integer> mailbox) throws MailboxException {
+ public long countMessagesInMailbox(Mailbox<MaildirId> mailbox) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
File newFolder = folder.getNewFolder();
File curFolder = folder.getCurFolder();
@@ -82,7 +83,7 @@ public class MaildirMessageMapper extend
* @see org.apache.james.mailbox.store.mail.MessageMapper#countUnseenMessagesInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public long countUnseenMessagesInMailbox(Mailbox<Integer> mailbox) throws MailboxException {
+ public long countUnseenMessagesInMailbox(Mailbox<MaildirId> mailbox) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
File newFolder = folder.getNewFolder();
File curFolder = folder.getCurFolder();
@@ -100,7 +101,7 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- public void delete(Mailbox<Integer> mailbox, Message<Integer> message) throws MailboxException {
+ public void delete(Mailbox<MaildirId> mailbox, Message<MaildirId> message) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
try {
folder.delete(mailboxSession, message.getUid());
@@ -115,9 +116,9 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.store.mail.MessageMapper.FetchType, int)
*/
@Override
- public Iterator<Message<Integer>> findInMailbox(Mailbox<Integer> mailbox, MessageRange set, FetchType fType, int max)
+ public Iterator<Message<MaildirId>> findInMailbox(Mailbox<MaildirId> mailbox, MessageRange set, FetchType fType, int max)
throws MailboxException {
- final List<Message<Integer>> results;
+ final List<Message<MaildirId>> results;
final long from = set.getUidFrom();
final long to = set.getUidTo();
final Type type = set.getType();
@@ -144,7 +145,7 @@ public class MaildirMessageMapper extend
* @see org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessageUidsInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public List<Long> findRecentMessageUidsInMailbox(Mailbox<Integer> mailbox) throws MailboxException {
+ public List<Long> findRecentMessageUidsInMailbox(Mailbox<MaildirId> mailbox) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
SortedMap<Long, MaildirMessageName> recentMessageNames = folder.getRecentMessages(mailboxSession);
return new ArrayList<Long>(recentMessageNames.keySet());
@@ -155,8 +156,8 @@ public class MaildirMessageMapper extend
* @see org.apache.james.mailbox.store.mail.MessageMapper#findFirstUnseenMessageUid(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
@Override
- public Long findFirstUnseenMessageUid(Mailbox<Integer> mailbox) throws MailboxException {
- List<Message<Integer>> result = findMessagesInMailbox(mailbox, MaildirMessageName.FILTER_UNSEEN_MESSAGES, 1);
+ public Long findFirstUnseenMessageUid(Mailbox<MaildirId> mailbox) throws MailboxException {
+ List<Message<MaildirId>> result = findMessagesInMailbox(mailbox, MaildirMessageName.FILTER_UNSEEN_MESSAGES, 1);
if (result.isEmpty()) {
return null;
} else {
@@ -170,14 +171,14 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.model.MessageRange)
*/
@Override
- public Iterator<UpdatedFlags> updateFlags(final Mailbox<Integer> mailbox, final Flags flags, final boolean value,
+ public Iterator<UpdatedFlags> updateFlags(final Mailbox<MaildirId> mailbox, final Flags flags, final boolean value,
final boolean replace, final MessageRange set) throws MailboxException {
final List<UpdatedFlags> updatedFlags = new ArrayList<UpdatedFlags>();
final MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
- Iterator<Message<Integer>> it = findInMailbox(mailbox, set, FetchType.Metadata, -1);
+ Iterator<Message<MaildirId>> it = findInMailbox(mailbox, set, FetchType.Metadata, -1);
while (it.hasNext()) {
- final Message<Integer> member = it.next();
+ final Message<MaildirId> member = it.next();
Flags originalFlags = member.createFlags();
if (replace) {
member.setFlags(flags);
@@ -239,9 +240,9 @@ public class MaildirMessageMapper extend
}
@Override
- public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<Integer> mailbox, MessageRange set)
+ public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<MaildirId> mailbox, MessageRange set)
throws MailboxException {
- List<Message<Integer>> results = new ArrayList<Message<Integer>>();
+ List<Message<MaildirId>> results = new ArrayList<Message<MaildirId>>();
final long from = set.getUidFrom();
final long to = set.getUidTo();
final Type type = set.getType();
@@ -264,7 +265,7 @@ public class MaildirMessageMapper extend
}
Map<Long, MessageMetaData> uids = new HashMap<Long, MessageMetaData>();
for (int i = 0; i < results.size(); i++) {
- Message<Integer> m = results.get(i);
+ Message<MaildirId> m = results.get(i);
long uid = m.getUid();
uids.put(uid, new SimpleMessageMetaData(m));
delete(mailbox, m);
@@ -280,7 +281,7 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- public MessageMetaData move(Mailbox<Integer> mailbox, Message<Integer> original) throws MailboxException {
+ public MessageMetaData move(Mailbox<MaildirId> mailbox, Message<MaildirId> original) throws MailboxException {
throw new UnsupportedOperationException("Not implemented - see https://issues.apache.org/jira/browse/IMAP-370");
}
@@ -290,9 +291,9 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- protected MessageMetaData copy(Mailbox<Integer> mailbox, long uid, long modSeq, Message<Integer> original)
+ protected MessageMetaData copy(Mailbox<MaildirId> mailbox, long uid, long modSeq, Message<MaildirId> original)
throws MailboxException {
- SimpleMessage<Integer> theCopy = new SimpleMessage<Integer>(mailbox, original);
+ SimpleMessage<MaildirId> theCopy = new SimpleMessage<MaildirId>(mailbox, original);
Flags flags = theCopy.createFlags();
flags.add(Flag.RECENT);
theCopy.setFlags(flags);
@@ -304,7 +305,7 @@ public class MaildirMessageMapper extend
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- protected MessageMetaData save(Mailbox<Integer> mailbox, Message<Integer> message) throws MailboxException {
+ protected MessageMetaData save(Mailbox<MaildirId> mailbox, Message<MaildirId> message) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
long uid = 0;
// a new message
@@ -390,13 +391,13 @@ public class MaildirMessageMapper extend
}
- private List<Message<Integer>> findMessageInMailboxWithUID(Mailbox<Integer> mailbox, long uid)
+ private List<Message<MaildirId>> findMessageInMailboxWithUID(Mailbox<MaildirId> mailbox, long uid)
throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
try {
MaildirMessageName messageName = folder.getMessageNameByUid(mailboxSession, uid);
- ArrayList<Message<Integer>> messages = new ArrayList<Message<Integer>>();
+ ArrayList<Message<MaildirId>> messages = new ArrayList<Message<MaildirId>>();
if (messageName != null && messageName.getFile().exists()) {
messages.add(new MaildirMessage(mailbox, uid, messageName));
}
@@ -407,7 +408,7 @@ public class MaildirMessageMapper extend
}
}
- private List<Message<Integer>> findMessagesInMailboxBetweenUIDs(Mailbox<Integer> mailbox, FilenameFilter filter,
+ private List<Message<MaildirId>> findMessagesInMailboxBetweenUIDs(Mailbox<MaildirId> mailbox, FilenameFilter filter,
long from, long to, int max) throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
int cur = 0;
@@ -418,7 +419,7 @@ public class MaildirMessageMapper extend
else
uidMap = folder.getUidMap(mailboxSession, from, to);
- ArrayList<Message<Integer>> messages = new ArrayList<Message<Integer>>();
+ ArrayList<Message<MaildirId>> messages = new ArrayList<Message<MaildirId>>();
for (Entry<Long, MaildirMessageName> entry : uidMap.entrySet()) {
messages.add(new MaildirMessage(mailbox, entry.getKey(), entry.getValue()));
if (max != -1) {
@@ -434,13 +435,13 @@ public class MaildirMessageMapper extend
}
- private List<Message<Integer>> findMessagesInMailbox(Mailbox<Integer> mailbox, FilenameFilter filter, int limit)
+ private List<Message<MaildirId>> findMessagesInMailbox(Mailbox<MaildirId> mailbox, FilenameFilter filter, int limit)
throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
try {
SortedMap<Long, MaildirMessageName> uidMap = folder.getUidMap(mailboxSession, filter, limit);
- ArrayList<Message<Integer>> filtered = new ArrayList<Message<Integer>>(uidMap.size());
+ ArrayList<Message<MaildirId>> filtered = new ArrayList<Message<MaildirId>>(uidMap.size());
for (Entry<Long, MaildirMessageName> entry : uidMap.entrySet())
filtered.add(new MaildirMessage(mailbox, entry.getKey(), entry.getValue()));
return filtered;
@@ -450,12 +451,12 @@ public class MaildirMessageMapper extend
}
- private List<Message<Integer>> findDeletedMessageInMailboxWithUID(Mailbox<Integer> mailbox, long uid)
+ private List<Message<MaildirId>> findDeletedMessageInMailboxWithUID(Mailbox<MaildirId> mailbox, long uid)
throws MailboxException {
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
try {
MaildirMessageName messageName = folder.getMessageNameByUid(mailboxSession, uid);
- ArrayList<Message<Integer>> messages = new ArrayList<Message<Integer>>();
+ ArrayList<Message<MaildirId>> messages = new ArrayList<Message<MaildirId>>();
if (MaildirMessageName.FILTER_DELETED_MESSAGES.accept(null, messageName.getFullName())) {
messages.add(new MaildirMessage(mailbox, uid, messageName));
}
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=1688109&r1=1688108&r2=1688109&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 Mon Jun 29 08:21:12 2015
@@ -18,8 +18,21 @@
****************************************************************/
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.MaildirId;
import org.apache.james.mailbox.maildir.MaildirMessageName;
import org.apache.james.mailbox.store.mail.model.AbstractMessage;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -35,15 +48,9 @@ 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> {
+public class MaildirMessage extends AbstractMessage<MaildirId> {
- private MaildirMessageName messageName;
+ private MaildirMessageName messageName;
private int bodyStartOctet;
private final PropertyBuilder propertyBuilder = new PropertyBuilder();
private boolean parsed;
@@ -53,12 +60,12 @@ public class MaildirMessage extends Abst
private boolean flagged;
private boolean recent;
private boolean seen;
- private Mailbox<Integer> mailbox;
+ private Mailbox<MaildirId> mailbox;
private long uid;
protected boolean newMessage;
private long modSeq;
- public MaildirMessage(Mailbox<Integer> mailbox, long uid, MaildirMessageName messageName) throws IOException {
+ public MaildirMessage(Mailbox<MaildirId> mailbox, long uid, MaildirMessageName messageName) throws IOException {
this.mailbox = mailbox;
setUid(uid);
setModSeq(messageName.getFile().lastModified());
@@ -83,7 +90,7 @@ public class MaildirMessage extends Abst
@Override
- public Integer getMailboxId() {
+ public MaildirId getMailboxId() {
return mailbox.getMailboxId();
}
Modified: james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java (original)
+++ james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerTest.java Mon Jun 29 08:21:12 2015
@@ -118,7 +118,7 @@ public class MaildirMailboxManagerTest e
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
+ StoreMailboxManager<MaildirId> manager = new StoreMailboxManager<MaildirId>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
manager.init();
setMailboxManager(manager);
try {
@@ -151,7 +151,7 @@ public class MaildirMailboxManagerTest e
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
+ StoreMailboxManager<MaildirId> manager = new StoreMailboxManager<MaildirId>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
manager.init();
setMailboxManager(manager);
try {
@@ -183,7 +183,7 @@ public class MaildirMailboxManagerTest e
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- StoreMailboxManager<Integer> manager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
+ StoreMailboxManager<MaildirId> manager = new StoreMailboxManager<MaildirId>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
manager.init();
setMailboxManager(manager);
try {
Modified: james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java (original)
+++ james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirStressTest.java Mon Jun 29 08:21:12 2015
@@ -38,7 +38,7 @@ public class MaildirStressTest extends A
private static final String MAILDIR_HOME = "target/Maildir";
- private StoreMailboxManager<Integer> mailboxManager;
+ private StoreMailboxManager<MaildirId> mailboxManager;
@Before
public void setUp() throws MailboxException {
@@ -48,7 +48,7 @@ public class MaildirStressTest extends A
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- mailboxManager = new StoreMailboxManager<Integer>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
+ mailboxManager = new StoreMailboxManager<MaildirId>(mf, null, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver);
mailboxManager.init();
}
Added: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java?rev=1688109&view=auto
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java (added)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryId.java Mon Jun 29 08:21:12 2015
@@ -0,0 +1,71 @@
+/****************************************************************
+ * 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.inmemory;
+
+import org.apache.james.mailbox.store.mail.model.MailboxId;
+
+public class InMemoryId implements MailboxId {
+
+ public static InMemoryId of(long value) {
+ return new InMemoryId(value);
+ }
+
+ private final long value;
+
+ private InMemoryId(long value) {
+ this.value = value;
+ }
+
+ @Override
+ public String serialize() {
+ return String.valueOf(value);
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ public long getRawId() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (value ^ (value >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ InMemoryId other = (InMemoryId) obj;
+ if (value != other.value)
+ return false;
+ return true;
+ }
+
+}
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java Mon Jun 29 08:21:12 2015
@@ -31,10 +31,10 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
-public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFactory<Long> {
+public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFactory<InMemoryId> {
- private MailboxMapper<Long> mailboxMapper;
- private MessageMapper<Long> messageMapper;
+ private MailboxMapper<InMemoryId> mailboxMapper;
+ private MessageMapper<InMemoryId> messageMapper;
private SubscriptionMapper subscriptionMapper;
public InMemoryMailboxSessionMapperFactory() {
@@ -44,12 +44,12 @@ public class InMemoryMailboxSessionMappe
}
@Override
- public MailboxMapper<Long> createMailboxMapper(MailboxSession session) throws MailboxException {
+ public MailboxMapper<InMemoryId> createMailboxMapper(MailboxSession session) throws MailboxException {
return mailboxMapper;
}
@Override
- public MessageMapper<Long> createMessageMapper(MailboxSession session) throws MailboxException {
+ public MessageMapper<InMemoryId> createMessageMapper(MailboxSession session) throws MailboxException {
return messageMapper;
}
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java Mon Jun 29 08:21:12 2015
@@ -26,26 +26,27 @@ import java.util.concurrent.atomic.Atomi
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-public class InMemoryMailboxMapper implements MailboxMapper<Long> {
+public class InMemoryMailboxMapper implements MailboxMapper<InMemoryId> {
private static final int INITIAL_SIZE = 128;
- private final Map<Long, Mailbox<Long>> mailboxesById;
+ private final Map<InMemoryId, Mailbox<InMemoryId>> mailboxesById;
private final static AtomicLong IDS = new AtomicLong();
public InMemoryMailboxMapper() {
- mailboxesById = new ConcurrentHashMap<Long, Mailbox<Long>>(INITIAL_SIZE);
+ mailboxesById = new ConcurrentHashMap<InMemoryId, Mailbox<InMemoryId>>(INITIAL_SIZE);
}
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#delete(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public void delete(Mailbox<Long> mailbox) throws MailboxException {
+ public void delete(Mailbox<InMemoryId> mailbox) throws MailboxException {
mailboxesById.remove(mailbox.getMailboxId());
}
@@ -56,9 +57,9 @@ public class InMemoryMailboxMapper imple
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxByPath(org.apache.james.mailbox.model.MailboxPath)
*/
- public synchronized Mailbox<Long> findMailboxByPath(MailboxPath path) throws MailboxException, MailboxNotFoundException {
- Mailbox<Long> result = null;
- for (final Mailbox<Long> mailbox:mailboxesById.values()) {
+ public synchronized Mailbox<InMemoryId> findMailboxByPath(MailboxPath path) throws MailboxException, MailboxNotFoundException {
+ Mailbox<InMemoryId> result = null;
+ for (final Mailbox<InMemoryId> mailbox:mailboxesById.values()) {
MailboxPath mp = new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName());
if (mp.equals(path)) {
result = mailbox;
@@ -75,10 +76,10 @@ public class InMemoryMailboxMapper imple
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(org.apache.james.mailbox.model.MailboxPath)
*/
- public List<Mailbox<Long>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
+ public List<Mailbox<InMemoryId>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
final String regex = path.getName().replace("%", ".*");
- List<Mailbox<Long>> results = new ArrayList<Mailbox<Long>>();
- for (final Mailbox<Long> mailbox:mailboxesById.values()) {
+ List<Mailbox<InMemoryId>> results = new ArrayList<Mailbox<InMemoryId>>();
+ for (final Mailbox<InMemoryId> mailbox:mailboxesById.values()) {
if (mailboxMatchesRegex(mailbox, path, regex)) {
results.add(mailbox);
}
@@ -86,7 +87,7 @@ public class InMemoryMailboxMapper imple
return results;
}
- private boolean mailboxMatchesRegex(Mailbox<Long> mailbox, MailboxPath path, String regex) {
+ private boolean mailboxMatchesRegex(Mailbox<InMemoryId> mailbox, MailboxPath path, String regex) {
return mailbox.getNamespace().equals(path.getNamespace())
&& mailbox.getUser().equals(path.getUser())
&& mailbox.getName().matches(regex);
@@ -95,11 +96,11 @@ public class InMemoryMailboxMapper imple
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#save(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public void save(Mailbox<Long> mailbox) throws MailboxException {
- Long id = mailbox.getMailboxId();
+ public void save(Mailbox<InMemoryId> mailbox) throws MailboxException {
+ InMemoryId id = mailbox.getMailboxId();
if (id == null) {
- id = IDS.incrementAndGet();
- ((SimpleMailbox<Long>) mailbox).setMailboxId(id);
+ id = InMemoryId.of(IDS.incrementAndGet());
+ ((SimpleMailbox<InMemoryId>) mailbox).setMailboxId(id);
}
mailboxesById.put(id, mailbox);
}
@@ -114,10 +115,10 @@ public class InMemoryMailboxMapper imple
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#hasChildren(org.apache.james.mailbox.store.mail.model.Mailbox, char)
*/
- public boolean hasChildren(Mailbox<Long> mailbox, char delimiter) throws MailboxException,
+ public boolean hasChildren(Mailbox<InMemoryId> mailbox, char delimiter) throws MailboxException,
MailboxNotFoundException {
String mailboxName = mailbox.getName() + delimiter;
- for (final Mailbox<Long> box:mailboxesById.values()) {
+ for (final Mailbox<InMemoryId> box:mailboxesById.values()) {
if (box.getName().startsWith(mailboxName)) {
return true;
}
@@ -128,8 +129,8 @@ public class InMemoryMailboxMapper imple
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#list()
*/
- public List<Mailbox<Long>> list() throws MailboxException {
- return new ArrayList<Mailbox<Long>>(mailboxesById.values());
+ public List<Mailbox<InMemoryId>> list() throws MailboxException {
+ return new ArrayList<Mailbox<InMemoryId>>(mailboxesById.values());
}
public <T> T execute(Transaction<T> transaction) throws MailboxException {
@@ -137,7 +138,7 @@ public class InMemoryMailboxMapper imple
}
@Override
- public void updateACL(Mailbox<Long> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException{
+ public void updateACL(Mailbox<InMemoryId> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException{
mailbox.setACL(mailbox.getACL().apply(mailboxACLCommand));
}
}
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java Mon Jun 29 08:21:12 2015
@@ -32,6 +32,7 @@ import javax.mail.Flags.Flag;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.store.SimpleMessageMetaData;
@@ -42,21 +43,21 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
-public class InMemoryMessageMapper extends AbstractMessageMapper<Long> {
+public class InMemoryMessageMapper extends AbstractMessageMapper<InMemoryId> {
- private Map<Long, Map<Long, Message<Long>>> mailboxByUid;
+ private Map<InMemoryId, Map<Long, Message<InMemoryId>>> mailboxByUid;
private static final int INITIAL_SIZE = 256;
- public InMemoryMessageMapper(MailboxSession session, UidProvider<Long> uidProvider,
- ModSeqProvider<Long> modSeqProvider) {
+ public InMemoryMessageMapper(MailboxSession session, UidProvider<InMemoryId> uidProvider,
+ ModSeqProvider<InMemoryId> modSeqProvider) {
super(session, uidProvider, modSeqProvider);
- this.mailboxByUid = new ConcurrentHashMap<Long, Map<Long, Message<Long>>>(INITIAL_SIZE);
+ this.mailboxByUid = new ConcurrentHashMap<InMemoryId, Map<Long, Message<InMemoryId>>>(INITIAL_SIZE);
}
- private Map<Long, Message<Long>> getMembershipByUidForMailbox(Mailbox<Long> mailbox) {
- Map<Long, Message<Long>> membershipByUid = mailboxByUid.get(mailbox.getMailboxId());
+ private Map<Long, Message<InMemoryId>> getMembershipByUidForMailbox(Mailbox<InMemoryId> mailbox) {
+ Map<Long, Message<InMemoryId>> membershipByUid = mailboxByUid.get(mailbox.getMailboxId());
if (membershipByUid == null) {
- membershipByUid = new ConcurrentHashMap<Long, Message<Long>>(INITIAL_SIZE);
+ membershipByUid = new ConcurrentHashMap<Long, Message<InMemoryId>>(INITIAL_SIZE);
mailboxByUid.put(mailbox.getMailboxId(), membershipByUid);
}
return membershipByUid;
@@ -65,16 +66,16 @@ public class InMemoryMessageMapper exten
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#countMessagesInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public long countMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public long countMessagesInMailbox(Mailbox<InMemoryId> mailbox) throws MailboxException {
return getMembershipByUidForMailbox(mailbox).size();
}
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#countUnseenMessagesInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public long countUnseenMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public long countUnseenMessagesInMailbox(Mailbox<InMemoryId> mailbox) throws MailboxException {
long count = 0;
- for (Message<Long> member : getMembershipByUidForMailbox(mailbox).values()) {
+ for (Message<InMemoryId> member : getMembershipByUidForMailbox(mailbox).values()) {
if (!member.isSeen()) {
count++;
}
@@ -86,7 +87,7 @@ public class InMemoryMessageMapper exten
* @see org.apache.james.mailbox.store.mail.MessageMapper#delete(org.apache.james.mailbox.store.mail.model.Mailbox,
* org.apache.james.mailbox.store.mail.model.Message)
*/
- public void delete(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
+ public void delete(Mailbox<InMemoryId> mailbox, Message<InMemoryId> message) throws MailboxException {
getMembershipByUidForMailbox(mailbox).remove(message.getUid());
}
@@ -95,25 +96,25 @@ public class InMemoryMessageMapper exten
* org.apache.james.mailbox.model.MessageRange,
* org.apache.james.mailbox.store.mail.MessageMapper.FetchType, int)
*/
- public Iterator<Message<Long>> findInMailbox(Mailbox<Long> mailbox, MessageRange set, FetchType ftype, int max)
+ public Iterator<Message<InMemoryId>> findInMailbox(Mailbox<InMemoryId> mailbox, MessageRange set, FetchType ftype, int max)
throws MailboxException {
- List<Message<Long>> results;
+ List<Message<InMemoryId>> results;
final MessageRange.Type type = set.getType();
switch (type) {
case ALL:
- results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
+ results = new ArrayList<Message<InMemoryId>>(getMembershipByUidForMailbox(mailbox).values());
break;
case FROM:
- results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
- for (final Iterator<Message<Long>> it = results.iterator(); it.hasNext();) {
+ results = new ArrayList<Message<InMemoryId>>(getMembershipByUidForMailbox(mailbox).values());
+ for (final Iterator<Message<InMemoryId>> it = results.iterator(); it.hasNext();) {
if (it.next().getUid() < set.getUidFrom()) {
it.remove();
}
}
break;
case RANGE:
- results = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
- for (final Iterator<Message<Long>> it = results.iterator(); it.hasNext();) {
+ results = new ArrayList<Message<InMemoryId>>(getMembershipByUidForMailbox(mailbox).values());
+ for (final Iterator<Message<InMemoryId>> it = results.iterator(); it.hasNext();) {
final long uid = it.next().getUid();
if (uid < set.getUidFrom() || uid > set.getUidTo()) {
it.remove();
@@ -121,14 +122,14 @@ public class InMemoryMessageMapper exten
}
break;
case ONE:
- results = new ArrayList<Message<Long>>(1);
- final Message<Long> member = getMembershipByUidForMailbox(mailbox).get(set.getUidFrom());
+ results = new ArrayList<Message<InMemoryId>>(1);
+ final Message<InMemoryId> member = getMembershipByUidForMailbox(mailbox).get(set.getUidFrom());
if (member != null) {
results.add(member);
}
break;
default:
- results = new ArrayList<Message<Long>>();
+ results = new ArrayList<Message<InMemoryId>>();
break;
}
Collections.sort(results);
@@ -142,9 +143,9 @@ public class InMemoryMessageMapper exten
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessageUidsInMailbox(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public List<Long> findRecentMessageUidsInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public List<Long> findRecentMessageUidsInMailbox(Mailbox<InMemoryId> mailbox) throws MailboxException {
final List<Long> results = new ArrayList<Long>();
- for (Message<Long> member : getMembershipByUidForMailbox(mailbox).values()) {
+ for (Message<InMemoryId> member : getMembershipByUidForMailbox(mailbox).values()) {
if (member.isRecent()) {
results.add(member.getUid());
}
@@ -157,11 +158,11 @@ public class InMemoryMessageMapper exten
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#findFirstUnseenMessageUid(org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public Long findFirstUnseenMessageUid(Mailbox<Long> mailbox) throws MailboxException {
- List<Message<Long>> memberships = new ArrayList<Message<Long>>(getMembershipByUidForMailbox(mailbox).values());
+ public Long findFirstUnseenMessageUid(Mailbox<InMemoryId> mailbox) throws MailboxException {
+ List<Message<InMemoryId>> memberships = new ArrayList<Message<InMemoryId>>(getMembershipByUidForMailbox(mailbox).values());
Collections.sort(memberships);
for (int i = 0; i < memberships.size(); i++) {
- Message<Long> m = memberships.get(i);
+ Message<InMemoryId> m = memberships.get(i);
if (m.isSeen() == false) {
return m.getUid();
}
@@ -170,13 +171,13 @@ public class InMemoryMessageMapper exten
}
@Override
- public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(final Mailbox<Long> mailbox, MessageRange set)
+ public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(final Mailbox<InMemoryId> mailbox, MessageRange set)
throws MailboxException {
final Map<Long, MessageMetaData> filteredResult = new HashMap<Long, MessageMetaData>();
- Iterator<Message<Long>> it = findInMailbox(mailbox, set, FetchType.Metadata, -1);
+ Iterator<Message<InMemoryId>> it = findInMailbox(mailbox, set, FetchType.Metadata, -1);
while (it.hasNext()) {
- Message<Long> member = it.next();
+ Message<InMemoryId> member = it.next();
if (member.isDeleted()) {
filteredResult.put(member.getUid(), new SimpleMessageMetaData(member));
@@ -197,7 +198,7 @@ public class InMemoryMessageMapper exten
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- public MessageMetaData move(Mailbox<Long> mailbox, Message<Long> original) throws MailboxException {
+ public MessageMetaData move(Mailbox<InMemoryId> mailbox, Message<InMemoryId> original) throws MailboxException {
throw new UnsupportedOperationException("Not implemented - see https://issues.apache.org/jira/browse/IMAP-370");
}
@@ -212,9 +213,9 @@ public class InMemoryMessageMapper exten
* @see org.apache.james.mailbox.store.mail.AbstractMessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox,
* long, long, org.apache.james.mailbox.store.mail.model.Message)
*/
- protected MessageMetaData copy(Mailbox<Long> mailbox, long uid, long modSeq, Message<Long> original)
+ protected MessageMetaData copy(Mailbox<InMemoryId> mailbox, long uid, long modSeq, Message<InMemoryId> original)
throws MailboxException {
- SimpleMessage<Long> message = new SimpleMessage<Long>(mailbox, original);
+ SimpleMessage<InMemoryId> message = new SimpleMessage<InMemoryId>(mailbox, original);
message.setUid(uid);
message.setModSeq(modSeq);
Flags flags = original.createFlags();
@@ -229,8 +230,8 @@ public class InMemoryMessageMapper exten
* @see org.apache.james.mailbox.store.mail.AbstractMessageMapper#save(org.apache.james.mailbox.store.mail.model.Mailbox,
* org.apache.james.mailbox.store.mail.model.Message)
*/
- protected MessageMetaData save(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
- SimpleMessage<Long> copy = new SimpleMessage<Long>(mailbox, message);
+ protected MessageMetaData save(Mailbox<InMemoryId> mailbox, Message<InMemoryId> message) throws MailboxException {
+ SimpleMessage<InMemoryId> copy = new SimpleMessage<InMemoryId>(mailbox, message);
copy.setUid(message.getUid());
copy.setModSeq(message.getModSeq());
getMembershipByUidForMailbox(mailbox).put(message.getUid(), copy);
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java Mon Jun 29 08:21:12 2015
@@ -25,23 +25,24 @@ import java.util.concurrent.atomic.Atomi
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.store.mail.ModSeqProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-public class InMemoryModSeqProvider implements ModSeqProvider<Long>{
- private final ConcurrentMap<Long, AtomicLong> map = new ConcurrentHashMap<Long, AtomicLong>();
+public class InMemoryModSeqProvider implements ModSeqProvider<InMemoryId>{
+ private final ConcurrentMap<InMemoryId, AtomicLong> map = new ConcurrentHashMap<InMemoryId, AtomicLong>();
@Override
- public long nextModSeq(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ public long nextModSeq(MailboxSession session, Mailbox<InMemoryId> mailbox) throws MailboxException {
return getHighest(mailbox.getMailboxId()).incrementAndGet();
}
@Override
- public long highestModSeq(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ public long highestModSeq(MailboxSession session, Mailbox<InMemoryId> mailbox) throws MailboxException {
return getHighest(mailbox.getMailboxId()).get();
}
- private AtomicLong getHighest(Long id) {
+ private AtomicLong getHighest(InMemoryId id) {
AtomicLong uid = map.get(id);
if (uid == null) {
uid = new AtomicLong(0);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org