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 no...@apache.org on 2010/12/07 10:05:05 UTC
svn commit: r1042941 - in /james/mailbox/trunk:
jcr/src/main/java/org/apache/james/mailbox/jcr/
jcr/src/main/java/org/apache/james/mailbox/jcr/mail/
jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/
jcr/src/test/java/org/apache/james/mailbox/j...
Author: norman
Date: Tue Dec 7 09:05:04 2010
New Revision: 1042941
URL: http://svn.apache.org/viewvc?rev=1042941&view=rev
Log:
Make it transparent for the developer to generate the next uid. This seems like the "cleaner" solution..
Modified:
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRHostSystem.java
james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAMailboxMembership.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAStreamingMailboxMembership.java
james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAHostSystem.java
james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageManager.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryStoreMessageManager.java
james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java Tue Dec 7 09:05:04 2010
@@ -30,7 +30,6 @@ import org.apache.james.mailbox.jcr.user
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.UidProvider;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
/**
@@ -44,19 +43,17 @@ public class JCRMailboxSessionMapperFact
private final Log logger;
private final static int DEFAULT_SCALING = 2;
private final int scaling;
- private final UidProvider<String> provider;
private int messageScaling;
- public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<String> uidProvider) {
- this(repository, uidProvider, DEFAULT_SCALING, JCRMessageMapper.MESSAGE_SCALE_DAY);
+ public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository) {
+ this(repository, DEFAULT_SCALING, JCRMessageMapper.MESSAGE_SCALE_DAY);
}
- public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<String> provider, final int scaling, final int messageScaling) {
+ public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final int scaling, final int messageScaling) {
this.repository = repository;
this.logger = LogFactory.getLog(JCRMailboxSessionMapperFactory.class);
this.scaling = scaling;
this.messageScaling = messageScaling;
- this.provider = provider;
}
@Override
@@ -67,7 +64,7 @@ public class JCRMailboxSessionMapperFact
@Override
public MessageMapper<String> createMessageMapper(MailboxSession session) throws MailboxException {
- JCRMessageMapper messageMapper = new JCRMessageMapper(repository, session, provider, logger, messageScaling);
+ JCRMessageMapper messageMapper = new JCRMessageMapper(repository, session, logger, messageScaling);
return messageMapper;
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java Tue Dec 7 09:05:04 2010
@@ -57,12 +57,12 @@ public class JCRMessageManager extends S
}
@Override
- protected MailboxMembership<String> createMessage(Date internalDate, int size, int bodyStartOctet, InputStream document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException{
+ protected MailboxMembership<String> createMessage(long uid, Date internalDate, int size, int bodyStartOctet, InputStream document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException{
final List<JCRHeader> jcrHeaders = new ArrayList<JCRHeader>(headers.size());
for (Header header: headers) {
jcrHeaders.add((JCRHeader) header);
}
- final MailboxMembership<String> message = new JCRMessage(getMailboxEntity().getMailboxId(), internalDate,
+ final MailboxMembership<String> message = new JCRMessage(getMailboxEntity().getMailboxId(), uid, internalDate,
size, flags, document, bodyStartOctet, jcrHeaders, propertyBuilder, log);
return message;
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java Tue Dec 7 09:05:04 2010
@@ -49,7 +49,6 @@ import org.apache.james.mailbox.jcr.Mail
import org.apache.james.mailbox.jcr.mail.model.JCRMessage;
import org.apache.james.mailbox.store.SearchQueryIterator;
import org.apache.james.mailbox.store.mail.MessageMapper;
-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.MailboxMembership;
import org.apache.james.mailbox.store.mail.model.UpdatedFlags;
@@ -60,8 +59,6 @@ import org.apache.james.mailbox.store.ma
*
*/
public class JCRMessageMapper extends AbstractJCRMapper implements MessageMapper<String> {
-
- private UidProvider<String> uidGenerator;
/**
* Store the messages directly in the mailbox: .../mailbox/
@@ -107,14 +104,13 @@ public class JCRMessageMapper extends Ab
* @param session {@link MailboxSession} to which the mapper is bound
* @param logger Log
*/
- public JCRMessageMapper(final MailboxSessionJCRRepository repos, MailboxSession session, final UidProvider<String> uidGenerator, final Log logger, int scaleType) {
+ public JCRMessageMapper(final MailboxSessionJCRRepository repos, MailboxSession session, final Log logger, int scaleType) {
super(repos, session, logger);
- this.uidGenerator = uidGenerator;
this.scaleType = scaleType;
}
- public JCRMessageMapper(final MailboxSessionJCRRepository repos, MailboxSession session, final UidProvider<String> uidGenerator, final Log logger) {
- this(repos, session, uidGenerator, logger, MESSAGE_SCALE_DAY);
+ public JCRMessageMapper(final MailboxSessionJCRRepository repos, MailboxSession session, final Log logger) {
+ this(repos, session, logger, MESSAGE_SCALE_DAY);
}
/**
@@ -510,18 +506,17 @@ public class JCRMessageMapper extends Ab
}
- final long nextUid = uidGenerator.nextUid(mSession, mailbox);
-
- messageNode = mailboxNode.addNode(String.valueOf(nextUid), "nt:file");
+ long uid = membership.getUid();
+ messageNode = mailboxNode.addNode(String.valueOf(uid), "nt:file");
messageNode.addMixin("jamesMailbox:message");
try {
membership.merge(messageNode);
- messageNode.setProperty(JCRMessage.UID_PROPERTY, nextUid);
+ messageNode.setProperty(JCRMessage.UID_PROPERTY, uid);
} catch (IOException e) {
throw new RepositoryException("Unable to merge message in to tree", e);
}
- return nextUid;
+ return uid;
} else {
membership.merge(messageNode);
@@ -644,13 +639,13 @@ public class JCRMessageMapper extends Ab
return xQuery;
}
+
/*
* (non-Javadoc)
- * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(java.lang.Object, long, org.apache.james.mailbox.store.mail.model.MailboxMembership)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, long, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long copy(Mailbox<String> mailbox, MailboxMembership<String> oldmessage) throws MailboxException{
+ public long copy(Mailbox<String> mailbox, long uid, MailboxMembership<String> oldmessage) throws MailboxException{
try {
- long uid = uidGenerator.nextUid(mSession, mailbox);
String newMessagePath = getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath() + NODE_DELIMITER + String.valueOf(uid);
getSession().getWorkspace().copy(((JCRMessage)oldmessage).getNode().getPath(), getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath() + NODE_DELIMITER + String.valueOf(uid));
Node node = getSession().getNode(newMessagePath);
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java Tue Dec 7 09:05:04 2010
@@ -99,7 +99,7 @@ public class JCRMessage extends Abstract
this.node = node;
}
- public JCRMessage(String mailboxUUID, Date internalDate, int size, Flags flags, InputStream content,
+ public JCRMessage(String mailboxUUID, long uid, Date internalDate, int size, Flags flags, InputStream content,
int bodyStartOctet, final List<JCRHeader> headers,
final PropertyBuilder propertyBuilder, Log logger) {
super();
@@ -108,7 +108,7 @@ public class JCRMessage extends Abstract
this.size = size;
this.logger = logger;
setFlags(flags);
-
+ this.uid = uid;
this.content = content;
this.bodyStartOctet = bodyStartOctet;
@@ -132,7 +132,7 @@ public class JCRMessage extends Abstract
* @param message
* @throws IOException
*/
- public JCRMessage(String mailboxUUID, JCRMessage message, Log logger) throws MailboxException {
+ public JCRMessage(String mailboxUUID, long uid, JCRMessage message, Log logger) throws MailboxException {
this.mailboxUUID = mailboxUUID;
this.internalDate = message.getInternalDate();
this.size = message.getFullContentOctets();
@@ -142,6 +142,7 @@ public class JCRMessage extends Abstract
this.flagged = message.isFlagged();
this.recent = message.isRecent();
this.seen = message.isSeen();
+ this.uid = uid;
this.logger = logger;
try {
Modified: james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRHostSystem.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRHostSystem.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRHostSystem.java (original)
+++ james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRHostSystem.java Tue Dec 7 09:05:04 2010
@@ -71,7 +71,7 @@ public class JCRHostSystem extends ImapH
userManager = new InMemoryUserManager();
JCRCachingUidProvider uidProvider = new JCRCachingUidProvider(sessionRepos);
- JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos, uidProvider);
+ JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos);
mailboxManager = new JCRMailboxManager(mf, userManager, uidProvider);
final ImapProcessor defaultImapProcessorFactory = DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager, new JCRSubscriptionManager(mf));
Modified: james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java (original)
+++ james/mailbox/trunk/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRStressTest.java Tue Dec 7 09:05:04 2010
@@ -64,7 +64,7 @@ public class JCRStressTest extends Abstr
JCRCachingUidProvider uidProvider = new JCRCachingUidProvider(sessionRepos);
- JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos, uidProvider);
+ JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos);
mailboxManager = new JCRMailboxManager(mf, null, uidProvider);
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java Tue Dec 7 09:05:04 2010
@@ -29,7 +29,6 @@ import org.apache.james.mailbox.jpa.user
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.UidProvider;
import org.apache.james.mailbox.store.user.SubscriptionMapper;
/**
@@ -40,16 +39,14 @@ public class JPAMailboxSessionMapperFact
private final EntityManagerFactory entityManagerFactory;
private final char delimiter;
- private UidProvider<Long> uidGenerator;
- public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory, UidProvider<Long> uidProvider) {
- this(entityManagerFactory, uidProvider, MailboxConstants.DEFAULT_DELIMITER);
+ public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory) {
+ this(entityManagerFactory, MailboxConstants.DEFAULT_DELIMITER);
}
- public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory, UidProvider<Long> uidGenerator, char delimiter) {
+ public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory, char delimiter) {
this.entityManagerFactory = entityManagerFactory;
this.delimiter = delimiter;
- this.uidGenerator = uidGenerator;
createEntityManager().close();
}
@@ -60,7 +57,7 @@ public class JPAMailboxSessionMapperFact
@Override
public MessageMapper<Long> createMessageMapper(MailboxSession session) {
- return new JPAMessageMapper(session, entityManagerFactory, uidGenerator);
+ return new JPAMessageMapper(entityManagerFactory);
}
@Override
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java Tue Dec 7 09:05:04 2010
@@ -47,13 +47,13 @@ public class JPAMessageManager extends S
}
@Override
- protected MailboxMembership<Long> createMessage(Date internalDate, final int size, int bodyStartOctet, final InputStream document,
+ protected MailboxMembership<Long> createMessage(long uid, Date internalDate, final int size, int bodyStartOctet, final InputStream document,
final Flags flags, final List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException{
final List<JPAHeader> jpaHeaders = new ArrayList<JPAHeader>(headers.size());
for (Header header: headers) {
jpaHeaders.add((JPAHeader) header);
}
- final MailboxMembership<Long> message = new JPAMailboxMembership(getMailboxEntity().getMailboxId(), internalDate, size, flags, document, bodyStartOctet, jpaHeaders, propertyBuilder);
+ final MailboxMembership<Long> message = new JPAMailboxMembership(getMailboxEntity().getMailboxId(), uid, internalDate, size, flags, document, bodyStartOctet, jpaHeaders, propertyBuilder);
return message;
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java Tue Dec 7 09:05:04 2010
@@ -28,7 +28,6 @@ import javax.persistence.PersistenceExce
import javax.persistence.Query;
import org.apache.james.mailbox.MailboxException;
-import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.MessageRange.Type;
import org.apache.james.mailbox.SearchQuery;
@@ -40,7 +39,6 @@ import org.apache.james.mailbox.jpa.mail
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAStreamingMailboxMembership;
import org.apache.james.mailbox.store.SearchQueryIterator;
import org.apache.james.mailbox.store.mail.MessageMapper;
-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.MailboxMembership;
import org.apache.james.mailbox.store.mail.model.UpdatedFlags;
@@ -52,13 +50,8 @@ import org.apache.james.mailbox.store.ma
*/
public class JPAMessageMapper extends JPATransactionalMapper implements MessageMapper<Long> {
- private final UidProvider<Long> uidGenerator;
- private MailboxSession session;
-
- public JPAMessageMapper(final MailboxSession session, final EntityManagerFactory entityManagerFactory, UidProvider<Long> uidGenerator) {
+ public JPAMessageMapper(final EntityManagerFactory entityManagerFactory) {
super(entityManagerFactory);
- this.session = session;
- this.uidGenerator = uidGenerator;
}
/**
@@ -305,9 +298,7 @@ public class JPAMessageMapper extends JP
*/
public long add(Mailbox<Long> mailbox, MailboxMembership<Long> message) throws MailboxException {
try {
-
- ((AbstractJPAMailboxMembership) message).setUid(uidGenerator.nextUid(session,mailbox));
-
+
getEntityManager().persist(message);
return message.getUid();
} catch (PersistenceException e) {
@@ -317,15 +308,15 @@ public class JPAMessageMapper extends JP
/*
* (non-Javadoc)
- * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
+ * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, long, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long copy(Mailbox<Long> mailbox, MailboxMembership<Long> original) throws MailboxException {
+ public long copy(Mailbox<Long> mailbox, long uid, MailboxMembership<Long> original) throws MailboxException {
MailboxMembership<Long> copy;
if (original instanceof JPAStreamingMailboxMembership) {
- copy = new JPAStreamingMailboxMembership(mailbox.getMailboxId(), (AbstractJPAMailboxMembership) original);
+ copy = new JPAStreamingMailboxMembership(mailbox.getMailboxId(), uid, (AbstractJPAMailboxMembership) original);
} else {
- copy = new JPAMailboxMembership(mailbox.getMailboxId(), (AbstractJPAMailboxMembership) original);
+ copy = new JPAMailboxMembership(mailbox.getMailboxId(), uid, (AbstractJPAMailboxMembership) original);
}
return add(mailbox, copy);
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMembership.java Tue Dec 7 09:05:04 2010
@@ -144,11 +144,11 @@ public abstract class AbstractJPAMailbox
@Deprecated
public AbstractJPAMailboxMembership() {}
- public AbstractJPAMailboxMembership(long mailboxId, Date internalDate, Flags flags, int bodyStartOctet, final List<JPAHeader> headers, final PropertyBuilder propertyBuilder) throws MailboxException {
+ public AbstractJPAMailboxMembership(long mailboxId, long uid, Date internalDate, Flags flags, int bodyStartOctet, final List<JPAHeader> headers, final PropertyBuilder propertyBuilder) throws MailboxException {
super();
this.mailboxId = mailboxId;
this.internalDate = internalDate;
-
+ this.uid = uid;
setFlags(flags);
}
@@ -160,9 +160,10 @@ public abstract class AbstractJPAMailbox
* @param original message to be copied, not null
* @throws IOException
*/
- public AbstractJPAMailboxMembership(long mailboxId, MailboxMembership<?> original) throws MailboxException {
+ public AbstractJPAMailboxMembership(long mailboxId, long uid, MailboxMembership<?> original) throws MailboxException {
super();
this.mailboxId = mailboxId;
+ this.uid = uid;
this.internalDate = original.getInternalDate();
this.answered = original.isAnswered();
this.deleted = original.isDeleted();
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAMailboxMembership.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAMailboxMembership.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAMailboxMembership.java Tue Dec 7 09:05:04 2010
@@ -48,9 +48,9 @@ public class JPAMailboxMembership extend
@Deprecated
public JPAMailboxMembership() {}
- public JPAMailboxMembership(long mailboxId, Date internalDate, int size, Flags flags,
+ public JPAMailboxMembership(long mailboxId, long uid, Date internalDate, int size, Flags flags,
InputStream content, int bodyStartOctet, final List<JPAHeader> headers, final PropertyBuilder propertyBuilder) throws MailboxException {
- super(mailboxId, internalDate, flags, bodyStartOctet, headers, propertyBuilder);
+ super(mailboxId, uid, internalDate, flags, bodyStartOctet, headers, propertyBuilder);
try {
this.message = new JPAMessage(content, size, bodyStartOctet, headers, propertyBuilder);
} catch (IOException e) {
@@ -58,8 +58,8 @@ public class JPAMailboxMembership extend
}
}
- public JPAMailboxMembership(long mailboxId, AbstractJPAMailboxMembership original) throws MailboxException {
- super(mailboxId, original);
+ public JPAMailboxMembership(long mailboxId, long uid, AbstractJPAMailboxMembership original) throws MailboxException {
+ super(mailboxId, uid, original);
try {
this.message = new JPAMessage((JPAMessage) original.getMessage());
} catch (IOException e) {
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAStreamingMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAStreamingMailboxMembership.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAStreamingMailboxMembership.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/JPAStreamingMailboxMembership.java Tue Dec 7 09:05:04 2010
@@ -49,16 +49,16 @@ public class JPAStreamingMailboxMembersh
@Deprecated
public JPAStreamingMailboxMembership() {}
- public JPAStreamingMailboxMembership(long mailboxId, Date internalDate, int size, Flags flags,
+ public JPAStreamingMailboxMembership(long mailboxId, long uid, Date internalDate, int size, Flags flags,
InputStream content, int bodyStartOctet, final List<JPAHeader> headers, final PropertyBuilder propertyBuilder) throws MailboxException {
- super(mailboxId, internalDate, flags, bodyStartOctet, headers, propertyBuilder);
+ super(mailboxId, uid, internalDate, flags, bodyStartOctet, headers, propertyBuilder);
this.message = new JPAStreamingMessage(content, size, bodyStartOctet, headers, propertyBuilder);
}
- public JPAStreamingMailboxMembership(long mailboxId, MailboxMembership<?> original) throws MailboxException {
- super(mailboxId, original);
+ public JPAStreamingMailboxMembership(long mailboxId, long uid, MailboxMembership<?> original) throws MailboxException {
+ super(mailboxId, uid, original);
try {
this.message = new JPAStreamingMessage(original.getMessage());
} catch (IOException e) {
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=1042941&r1=1042940&r2=1042941&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 Tue Dec 7 09:05:04 2010
@@ -58,15 +58,15 @@ public class OpenJPAMessageManager exten
}
@Override
- protected MailboxMembership<Long> createMessage(Date internalDate, int size, int bodyStartOctet, InputStream document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException {
+ protected MailboxMembership<Long> createMessage(long uid, Date internalDate, int size, int bodyStartOctet, InputStream document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException {
if (useStreaming) {
final List<JPAHeader> jpaHeaders = new ArrayList<JPAHeader>(headers.size());
for (Header header: headers) {
jpaHeaders.add((JPAHeader) header);
}
- return new JPAStreamingMailboxMembership(getMailboxEntity().getMailboxId(), internalDate, size, flags, document, bodyStartOctet, jpaHeaders, propertyBuilder);
+ return new JPAStreamingMailboxMembership(getMailboxEntity().getMailboxId(), uid, internalDate, size, flags, document, bodyStartOctet, jpaHeaders, propertyBuilder);
} else {
- return super.createMessage(internalDate, size, bodyStartOctet, document, flags, headers, propertyBuilder);
+ return super.createMessage(uid, internalDate, size, bodyStartOctet, document, flags, headers, propertyBuilder);
}
}
Modified: james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAHostSystem.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAHostSystem.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAHostSystem.java (original)
+++ james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAHostSystem.java Tue Dec 7 09:05:04 2010
@@ -80,7 +80,7 @@ public class JPAHostSystem extends ImapH
entityManagerFactory = OpenJPAPersistence.getEntityManagerFactory(properties);
JPACachingUidProvider uidProvider = new JPACachingUidProvider(entityManagerFactory);
- JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, uidProvider);
+ JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory);
mailboxManager = new OpenJPAMailboxManager(mf, userManager, uidProvider);
SubscriptionManager subscriptionManager = new JPASubscriptionManager(mf);
final ImapProcessor defaultImapProcessorFactory = DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager, subscriptionManager);
Modified: james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java (original)
+++ james/mailbox/trunk/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAStressTest.java Tue Dec 7 09:05:04 2010
@@ -75,7 +75,7 @@ public class JPAStressTest extends Abstr
entityManagerFactory = OpenJPAPersistence.getEntityManagerFactory(properties);
JPACachingUidProvider uidProvider = new JPACachingUidProvider(entityManagerFactory);
- JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, uidProvider);
+ JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory);
mailboxManager = new OpenJPAMailboxManager(mf, null, uidProvider);
// Set the lock timeout via SQL because of a bug in openJPA
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageManager.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageManager.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageManager.java Tue Dec 7 09:05:04 2010
@@ -51,7 +51,7 @@ public class MaildirMessageManager exten
}
@Override
- protected MailboxMembership<Integer> createMessage(Date internalDate,
+ protected MailboxMembership<Integer> createMessage(long uid, Date internalDate,
int size, int bodyStartOctet, InputStream documentIn, Flags flags,
List<Header> headers, PropertyBuilder propertyBuilder)
throws MailboxException {
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=1042941&r1=1042940&r2=1042941&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 Tue Dec 7 09:05:04 2010
@@ -67,7 +67,7 @@ public class MaildirMessageMapper extend
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long copy(Mailbox<Integer> mailbox, MailboxMembership<Integer> original)
+ public long copy(Mailbox<Integer> mailbox, long uid, MailboxMembership<Integer> original)
throws MailboxException {
MaildirMessage theCopy = new MaildirMessage(mailbox, (AbstractMaildirMessage) original);
Modified: james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryStoreMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryStoreMessageManager.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryStoreMessageManager.java (original)
+++ james/mailbox/trunk/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryStoreMessageManager.java Tue Dec 7 09:05:04 2010
@@ -51,7 +51,7 @@ public class InMemoryStoreMessageManager
}
@Override
- protected MailboxMembership<Long> createMessage(Date internalDate, int size, int bodyStartOctet,
+ protected MailboxMembership<Long> createMessage(long uid, Date internalDate, int size, int bodyStartOctet,
InputStream document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] byteContent;
@@ -70,7 +70,7 @@ public class InMemoryStoreMessageManager
byteContent = new byte[0];
}
InMemoryMailbox mailbox = (InMemoryMailbox) getMailboxEntity();
- return new SimpleMailboxMembership(internalDate, uidProvider.nextUid(null, mailbox), size, bodyStartOctet, byteContent, flags, headers, propertyBuilder, mailbox.getMailboxId());
+ return new SimpleMailboxMembership(internalDate, uid, size, bodyStartOctet, byteContent, flags, headers, propertyBuilder, mailbox.getMailboxId());
}
}
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=1042941&r1=1042940&r2=1042941&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 Tue Dec 7 09:05:04 2010
@@ -31,7 +31,6 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MessageRange;
import org.apache.james.mailbox.SearchQuery;
-import org.apache.james.mailbox.inmemory.mail.model.InMemoryMailbox;
import org.apache.james.mailbox.inmemory.mail.model.SimpleMailboxMembership;
import org.apache.james.mailbox.store.SearchQueryIterator;
import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -216,11 +215,8 @@ public class InMemoryMessageMapper exten
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, org.apache.james.mailbox.store.mail.model.MailboxMembership)
*/
- public long copy(Mailbox<Long> mailbox, MailboxMembership<Long> original) throws MailboxException {
- InMemoryMailbox iMailbox = (InMemoryMailbox) mailbox;
- iMailbox.consumeUid();
-
- SimpleMailboxMembership membership = new SimpleMailboxMembership(mailbox.getMailboxId(), iMailbox.getLastUid(), (SimpleMailboxMembership) original);
+ public long copy(Mailbox<Long> mailbox, long uid, MailboxMembership<Long> original) throws MailboxException {
+ SimpleMailboxMembership membership = new SimpleMailboxMembership(mailbox.getMailboxId(), uid, (SimpleMailboxMembership) original);
return add(mailbox, membership);
}
Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java Tue Dec 7 09:05:04 2010
@@ -257,7 +257,8 @@ public abstract class StoreMessageManage
if (isRecent) {
flags.add(Flags.Flag.RECENT);
}
- final MailboxMembership<Id> message = createMessage(internalDate, size, bodyStartOctet, tmpMsgIn.newStream(0, -1), flags, headers, propertyBuilder);
+ long nextUid = uidProvider.nextUid(mailboxSession, getMailboxEntity());
+ final MailboxMembership<Id> message = createMessage(nextUid, internalDate, size, bodyStartOctet, tmpMsgIn.newStream(0, -1), flags, headers, propertyBuilder);
long uid = appendMessageToStore(message, mailboxSession);
dispatcher.added(uid, mailboxSession.getSessionId(), new StoreMailboxPath<Id>(getMailboxEntity()));
@@ -327,6 +328,7 @@ public abstract class StoreMessageManage
/**
* Create a new {@link MailboxMembership} for the given data
*
+ * @param uid
* @param internalDate
* @param size
* @param bodyStartOctet
@@ -337,7 +339,7 @@ public abstract class StoreMessageManage
* @return membership
* @throws MailboxException
*/
- protected abstract MailboxMembership<Id> createMessage(Date internalDate, final int size, int bodyStartOctet,
+ protected abstract MailboxMembership<Id> createMessage(long uid, Date internalDate, final int size, int bodyStartOctet,
final InputStream documentIn, final Flags flags, final List<Header> headers, PropertyBuilder propertyBuilder) throws MailboxException;
/**
@@ -553,8 +555,8 @@ public abstract class StoreMessageManage
copiedRows.add(messageMapper.execute(new Mapper.Transaction<Long>() {
public Long run() throws MailboxException {
-
- return messageMapper.copy(getMailboxEntity(), originalMessage);
+ long uid = uidProvider.nextUid(session, getMailboxEntity());
+ return messageMapper.copy(getMailboxEntity(), uid, originalMessage);
}
Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java?rev=1042941&r1=1042940&r2=1042941&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java Tue Dec 7 09:05:04 2010
@@ -123,11 +123,13 @@ public interface MessageMapper<Id> exten
/**
- * Add the given {@link MailboxMembership} to the underlying storage, assign a new uid and return it. The uid generation should be delegated to the {@link UidProvider}
+ * Add the given {@link MailboxMembership} to the underlying storage. Be aware that implementation may choose to replace the uid of the given message while storing.
+ * So you should only depend on the returned uid.
*
*
* @param mailbox
* @param message
+ * @return uid
* @throws StorageException
*/
public abstract long add(Mailbox<Id> mailbox, MailboxMembership<Id> message) throws MailboxException;
@@ -147,14 +149,15 @@ public interface MessageMapper<Id> exten
final MessageRange set) throws MailboxException;
/**
- * Copy the given {@link MailboxMembership} to a new mailbox and return the uid of the copy
+ * Copy the given {@link MailboxMembership} to a new mailbox and return the uid of the copy. Be aware that the given uid is just a suggestion for the uid of the copied
+ * message. Implementation may choose to use a different one, so only depend on the returned uid!
*
* @param mailbox the Mailbox to copy to
- * @param uid the uid to use for the new MailboxMembership
+ * @param uid the uid to use for the new MailboxMembership.
* @param original the original to copy
* @return The uid of the copied instance
* @throws StorageException
*/
- public abstract long copy(Mailbox<Id> mailbox, MailboxMembership<Id> original) throws MailboxException;
+ public abstract long copy(Mailbox<Id> mailbox, long uid, MailboxMembership<Id> original) throws MailboxException;
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org