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

Reply via email to