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: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org