Author: norman
Date: Thu Aug 19 12:26:50 2010
New Revision: 987140
URL: http://svn.apache.org/viewvc?rev=987140&view=rev
Log:
only return the uid of the new new instance when copy a message (IMAP-203)
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/JPAMessageMapper.java
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/mail/MaildirMessageMapper.java
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMessageMapper.java
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
Thu Aug 19 12:26:50 2010
@@ -699,7 +699,7 @@ public class JCRMessageMapper extends Ab
* (non-Javadoc)
* @see
org.apache.james.imap.store.mail.MessageMapper#copy(java.lang.Object, long,
org.apache.james.imap.store.mail.model.MailboxMembership)
*/
- public MailboxMembership<String> copy(Mailbox<String> mailbox,
MailboxMembership<String> oldmessage) throws StorageException{
+ public long copy(Mailbox<String> mailbox, MailboxMembership<String>
oldmessage) throws StorageException{
try {
long uid = reserveNextUid((JCRMailbox) mailbox);
String newMessagePath =
getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath() +
NODE_DELIMITER + String.valueOf(uid);
@@ -707,7 +707,7 @@ public class JCRMessageMapper extends Ab
Node node = getSession().getNode(newMessagePath);
node.setProperty(JCRMessage.MAILBOX_UUID_PROPERTY,
mailbox.getMailboxId());
node.setProperty(JCRMessage.UID_PROPERTY, uid);
- return new JCRMessage(node,getLogger());
+ return uid;
} catch (RepositoryException e) {
throw new StorageException(HumanReadableText.SAVE_FAILED, e);
} catch (InterruptedException e) {
Modified:
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/JPAMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/JPAMessageMapper.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/JPAMessageMapper.java
(original)
+++
james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/JPAMessageMapper.java
Thu Aug 19 12:26:50 2010
@@ -318,9 +318,9 @@ public class JPAMessageMapper extends JP
/*
* (non-Javadoc)
- * @see
org.apache.james.imap.store.mail.MessageMapper#copy(java.lang.Object, long,
org.apache.james.imap.store.mail.model.MailboxMembership)
+ * @see
org.apache.james.imap.store.mail.MessageMapper#copy(org.apache.james.imap.store.mail.model.Mailbox,
org.apache.james.imap.store.mail.model.MailboxMembership)
*/
- public MailboxMembership<Long> copy(Mailbox<Long> mailbox,
MailboxMembership<Long> original) throws StorageException {
+ public long copy(Mailbox<Long> mailbox, MailboxMembership<Long> original)
throws StorageException {
try {
MailboxMembership<Long> copy;
if (original instanceof JPAStreamingMailboxMembership) {
@@ -328,8 +328,7 @@ public class JPAMessageMapper extends JP
} else {
copy = new JPAMailboxMembership(mailbox.getMailboxId(),
(AbstractJPAMailboxMembership)original);
}
- save(mailbox, copy);
- return copy;
+ return save(mailbox, copy);
} catch (MailboxException e) {
throw new StorageException(e.getKey(),e);
}
Modified:
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/mail/MaildirMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/mail/MaildirMessageMapper.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/mail/MaildirMessageMapper.java
(original)
+++
james/imap/trunk/maildir/src/main/java/org/apache/james/imap/maildir/mail/MaildirMessageMapper.java
Thu Aug 19 12:26:50 2010
@@ -71,11 +71,12 @@ public class MaildirMessageMapper implem
this.maildirStore = new MaildirStore(maildirLocation);
}
- /*
+
+ /*
* (non-Javadoc)
* @see
org.apache.james.imap.store.mail.MessageMapper#copy(org.apache.james.imap.store.mail.model.Mailbox,
org.apache.james.imap.store.mail.model.MailboxMembership)
*/
- public MailboxMembership<Integer> copy(Mailbox<Integer> mailbox,
MailboxMembership<Integer> original)
+ public long copy(Mailbox<Integer> mailbox, MailboxMembership<Integer>
original)
throws StorageException {
MaildirMessage theCopy;
try {
@@ -83,8 +84,7 @@ public class MaildirMessageMapper implem
} catch (MailboxException e) {
throw new StorageException(HumanReadableText.FAILURE_MAIL_PARSE,
e);
}
- theCopy.setUid(save(mailbox, theCopy));
- return theCopy;
+ return save(mailbox, theCopy);
}
/*
Modified:
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMessageMapper.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMessageMapper.java
(original)
+++
james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMessageMapper.java
Thu Aug 19 12:26:50 2010
@@ -203,11 +203,10 @@ public class InMemoryMessageMapper imple
* (non-Javadoc)
* @see
org.apache.james.imap.store.mail.MessageMapper#copy(org.apache.james.imap.store.mail.model.Mailbox,
org.apache.james.imap.store.mail.model.MailboxMembership)
*/
- public MailboxMembership<Long> copy(Mailbox<Long> mailbox,
MailboxMembership<Long> original) throws StorageException {
+ public long copy(Mailbox<Long> mailbox, MailboxMembership<Long> original)
throws StorageException {
((InMemoryMailbox) mailbox).consumeUid();
SimpleMailboxMembership membership = new
SimpleMailboxMembership(mailbox.getMailboxId(), mailbox.getLastUid(),
(SimpleMailboxMembership) original);
- save(mailbox, membership);
- return membership;
+ return save(mailbox, membership);
}
}
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMessageManager.java
Thu Aug 19 12:26:50 2010
@@ -499,24 +499,21 @@ public abstract class StoreMessageManage
private void copy(final List<MailboxMembership<Id>> originalRows, final
MailboxSession session) throws MailboxException {
try {
- final List<MailboxMembership<Id>> copiedRows = new
ArrayList<MailboxMembership<Id>>();
+ final List<Long> copiedRows = new ArrayList<Long>();
for (final MailboxMembership<Id> originalMessage:originalRows) {
- copiedRows.addAll(messageMapper.execute(new
TransactionalMapper.Transaction<List<MailboxMembership<Id>>>() {
+ copiedRows.add(messageMapper.execute(new
TransactionalMapper.Transaction<Long>() {
- public List<MailboxMembership<Id>> run() throws
MailboxException {
- final List<MailboxMembership<Id>> copiedRows = new
ArrayList<MailboxMembership<Id>>();
+ public Long run() throws MailboxException {
- final MailboxMembership<Id> newRow =
messageMapper.copy(mailbox, originalMessage);
+ return messageMapper.copy(mailbox, originalMessage);
- copiedRows.add(newRow);
- return copiedRows;
}
}));
}
// Wait until commit before issuing events
- for (MailboxMembership<Id> newMember:copiedRows) {
- dispatcher.added(newMember.getUid(), session.getSessionId(),
new StoreMailboxPath<Id>(getMailboxEntity()));
+ for (Long newMember:copiedRows) {
+ dispatcher.added(newMember, session.getSessionId(), new
StoreMailboxPath<Id>(getMailboxEntity()));
}
} catch (MessagingException e) {
throw new MailboxException(HumanReadableText.FAILURE_MAIL_PARSE,
e);
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java?rev=987140&r1=987139&r2=987140&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java
Thu Aug 19 12:26:50 2010
@@ -135,14 +135,14 @@ public interface MessageMapper<Id> exten
/**
- * Copy the given {...@link MailboxMembership} to a new mailbox
+ * Copy the given {...@link MailboxMembership} to a new mailbox and return
the uid of the copy
*
* @param mailbox the Mailbox to copy to
* @param uid the uid to use for the new MailboxMembership
* @param original the original to copy
- * @return The copied instance
+ * @return The uid of the copied instance
* @throws StorageException
*/
- public abstract MailboxMembership<Id> copy(Mailbox<Id> mailbox,
MailboxMembership<Id> original) throws StorageException;
+ public abstract long copy(Mailbox<Id> mailbox, MailboxMembership<Id>
original) throws StorageException;
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]