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 2011/06/20 12:07:04 UTC

svn commit: r1137573 - in /james/mailbox/trunk: jcr/src/main/java/org/apache/james/mailbox/jcr/ jcr/src/main/java/org/apache/james/mailbox/jcr/mail/ jpa/src/main/java/org/apache/james/mailbox/jpa/mail/ maildir/src/main/java/org/apache/james/mailbox/mai...

Author: norman
Date: Mon Jun 20 10:07:03 2011
New Revision: 1137573

URL: http://svn.apache.org/viewvc?rev=1137573&view=rev
Log:
Its now possible to directly use StoreMailboxManager and StoreMessageManager, so we can remove some of its sub-classes. Part of MAILBOX-98

Added:
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java
      - copied, changed from r1135926, james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/SimpleMessageMetaData.java
Removed:
    james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRMapper.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/SimpleMessageMetaData.java
Modified:
    james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRScalingMapper.java
    james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
    james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.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/mail/InMemoryMessageMapper.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.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/StoreSubscriptionManager.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
    james/mailbox/trunk/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java

Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRScalingMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRScalingMapper.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRScalingMapper.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/AbstractJCRScalingMapper.java Mon Jun 20 10:07:03 2011
@@ -20,25 +20,99 @@ package org.apache.james.mailbox.jcr;
 
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 
 import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.store.transaction.TransactionalMapper;
+import org.slf4j.Logger;
 
 /**
- * Abstract base class for Mapper's which support scaling 
+ * Abstract base class for Mapper's which support scaling. This supports Level 1 Implementations of JCR. So no real transaction management is used. 
+ * 
+ * The Session.save() will get called on commit() method,  session.refresh(false) on rollback, and session.refresh(true) on begin()
  *
  */
-public abstract class AbstractJCRScalingMapper extends AbstractJCRMapper{
+public abstract class AbstractJCRScalingMapper extends TransactionalMapper implements JCRImapConstants {
+    public final static String MAILBOXES_PATH =  "mailboxes";
 
+    private final MailboxSessionJCRRepository repository;
     private final int scaling;
+
+    private MailboxSession mSession;
     private final static char PAD ='_';
     
     public AbstractJCRScalingMapper(MailboxSessionJCRRepository repository, MailboxSession mSession, int scaling) {
-        super(repository, mSession);
         this.scaling = scaling;
+        
+        this.mSession = mSession;
+        this.repository = repository;
+    }
+
+    /**
+     * Return the logger
+     * 
+     * @return logger
+     */
+    protected Logger getLogger() {
+        return mSession.getLog();
+    }
+    
+    /**
+     * Return the JCR Session
+     * 
+     * @return session
+     */
+    protected Session getSession() throws RepositoryException{
+        return repository.login(mSession);
+    }
+
+    /**
+     * Begin is not supported by level 1 JCR implementations, however we refresh the session
+     */
+    protected void begin() throws MailboxException {  
+        try {
+            getSession().refresh(true);
+        } catch (RepositoryException e) {
+            // do nothin on refresh
+        }
+        // Do nothing
     }
 
     /**
+     * Just call save on the underlying JCR Session, because level 1 JCR implementation does not offer Transactions
+     */
+    protected void commit() throws MailboxException {
+        try {
+            if (getSession().hasPendingChanges()) {
+                getSession().save();
+            }
+        } catch (RepositoryException e) {
+            throw new MailboxException("Unable to commit", e);
+        }
+    }
+
+    /**
+     * Rollback is not supported by level 1 JCR implementations, so just do nothing
+     */
+    protected void rollback() throws MailboxException {
+        try {
+            // just refresh session and discard all pending changes
+            getSession().refresh(false);
+        } catch (RepositoryException e) {
+            // just catch on rollback by now
+        }
+    }
+
+    /**
+     * Logout from open JCR Session
+     */
+    public void endRequest() {
+       repository.logout(mSession);
+    }
+    
+    /**
      * Construct the user node path part, using the specified scaling factor.
      * If the username is not long enough it will fill it with {@link #PAD}
      * 

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=1137573&r1=1137572&r2=1137573&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 Mon Jun 20 10:07:03 2011
@@ -46,9 +46,9 @@ import org.apache.james.mailbox.jcr.JCRI
 import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
 import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.jcr.mail.model.JCRMessage;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.AbstractMessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.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=1137573&r1=1137572&r2=1137573&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 Mon Jun 20 10:07:03 2011
@@ -38,9 +38,9 @@ import org.apache.james.mailbox.jpa.mail
 import org.apache.james.mailbox.jpa.mail.model.openjpa.AbstractJPAMessage;
 import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMessage;
 import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAStreamingMessage;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.AbstractMessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.openjpa.persistence.ArgumentException;

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=1137573&r1=1137572&r2=1137573&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 20 10:07:03 2011
@@ -46,8 +46,8 @@ import org.apache.james.mailbox.maildir.
 import org.apache.james.mailbox.maildir.MaildirStore;
 import org.apache.james.mailbox.maildir.mail.model.MaildirMessage;
 import org.apache.james.mailbox.store.ResultUtils;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.AbstractMessageMapper;
-import org.apache.james.mailbox.store.mail.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;

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=1137573&r1=1137572&r2=1137573&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 20 10:07:03 2011
@@ -27,12 +27,15 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import javax.mail.Flags;
+import javax.mail.Flags.Flag;
+
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageMetaData;
 import org.apache.james.mailbox.MessageRange;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.AbstractMessageMapper;
-import org.apache.james.mailbox.store.mail.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
@@ -217,6 +220,11 @@ public class InMemoryMessageMapper exten
         SimpleMessage<Long> message = new SimpleMessage<Long>(mailbox, original);
         message.setUid(uid);
         message.setModSeq(modSeq);
+        Flags flags = original.createFlags();
+        
+        // Mark message as recent as it is a copy
+        flags.add(Flag.RECENT);
+        message.setFlags(flags);
         return save(mailbox, message);
     }
 
@@ -242,7 +250,11 @@ 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 {
-        getMembershipByUidForMailbox(mailbox).put(message.getUid(), message);
+        SimpleMessage<Long> copy = new SimpleMessage<Long>(mailbox, message);
+        copy.setUid(message.getUid());
+        copy.setModSeq(message.getModSeq());
+        getMembershipByUidForMailbox(mailbox).put(message.getUid(), copy);
+        
         return new SimpleMessageMetaData(message);
     }
 

Copied: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java (from r1135926, james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/SimpleMessageMetaData.java)
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java?p2=james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java&p1=james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/SimpleMessageMetaData.java&r1=1135926&r2=1137573&rev=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/SimpleMessageMetaData.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java Mon Jun 20 10:07:03 2011
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mailbox.store.mail;
+package org.apache.james.mailbox.store;
 
 import java.util.Date;
 

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java Mon Jun 20 10:07:03 2011
@@ -107,6 +107,11 @@ public class StoreMailboxManager<Id> imp
         }
     }
     
+    /**
+     * Return the {@link AbstractDelegatingMailboxListener} which is used by this {@link MailboxManager}
+     * 
+     * @return delegatingListener
+     */
     public AbstractDelegatingMailboxListener getDelegationListener() {
         if (delegatingListener == null) {
             delegatingListener = new HashMapDelegatingMailboxListener();
@@ -114,14 +119,31 @@ public class StoreMailboxManager<Id> imp
         return delegatingListener;
     }
     
+    
+    /**
+     * Return the {@link MessageSearchIndex} used by this {@link MailboxManager}
+     * 
+     * @return index
+     */
     public MessageSearchIndex<Id> getMessageSearchIndex() {
         return index;
     }
     
+    
+    /**
+     * Return the {@link MailboxEventDispatcher} used by thei {@link MailboxManager}
+     * 
+     * @return dispatcher
+     */
     public MailboxEventDispatcher<Id> getEventDispatcher() {
         return dispatcher;
     }
     
+    /**
+     * Return the {@link MailboxSessionMapperFactory} used by this {@link MailboxManager}
+     * 
+     * @return mailboxSessionMapperFactory
+     */
     public MailboxSessionMapperFactory<Id> getMapperFactory() {
         return mailboxSessionMapperFactory;
     }
@@ -134,12 +156,18 @@ public class StoreMailboxManager<Id> imp
      * @param delegatingListener
      */
     public void setDelegatingMailboxListener(AbstractDelegatingMailboxListener delegatingListener) {
-    	if(this.delegatingListener != null)
-    		this.delegatingListener.close();
+        if (this.delegatingListener != null)
+            this.delegatingListener.close();
         this.delegatingListener = delegatingListener;
         dispatcher.addMailboxListener(this.delegatingListener);
     }
     
+    /**
+     * Set the {@link MessageSearchIndex} which should be used by this {@link MailboxManager}. If none is given this implementation will use a {@link SimpleMessageSearchIndex}
+     * by default
+     * 
+     * @param index
+     */
     public void setMessageSearchIndex(MessageSearchIndex<Id> index) {
         this.index = index;
     }
@@ -234,7 +262,9 @@ public class StoreMailboxManager<Id> imp
     }
 
     /**
-     * Create a Mailbox for the given namespace
+     * Create a Mailbox for the given namespace. This will by default return a {@link SimpleMailbox}.
+     * 
+     * If you need to return something more special just override this method
      * 
      * @param namespaceName
      * @throws MailboxException
@@ -329,67 +359,7 @@ public class StoreMailboxManager<Id> imp
                 
                 // We need to create a copy of the mailbox as maybe we can not refer to the real
                 // mailbox once we remove it 
-                Mailbox<Id> m = new Mailbox<Id>() {
-                    private Id id = mailbox.getMailboxId();
-                    private String namespace = mailbox.getNamespace();
-                    private String name = mailbox.getName();
-                    private String user = mailbox.getUser();
-                    private long uidVal = mailbox.getUidValidity();
-                    private long lastUid = mailbox.getLastKnownUid();
-                    private long lastSeq = mailbox.getHighestKnownModSeq();
-                    
-                    
-                    public Id getMailboxId() {
-                        return id;
-                    }
-
-                    @Override
-                    public String getNamespace() {
-                        return namespace;
-                    }
-
-                    @Override
-                    public void setNamespace(String namespace) {
-                        this.namespace = namespace;
-                    }
-
-                    @Override
-                    public String getUser() {
-                        return user;
-                    }
-
-                    @Override
-                    public void setUser(String user) {
-                        this.user = user;
-                    }
-
-                    @Override
-                    public String getName() {
-                        return name;
-                    }
-
-                    @Override
-                    public void setName(String name) {
-                        this.name = name;
-                        
-                    }
-
-                    @Override
-                    public long getUidValidity() {
-                        return uidVal;
-                    }
-
-                    @Override
-                    public long getLastKnownUid() {
-                        return lastUid;
-                    }
-
-                    @Override
-                    public long getHighestKnownModSeq() {
-                        return lastSeq;
-                    }
-                    
-                };
+                SimpleMailbox<Id> m = new SimpleMailbox<Id>(mailbox);
                 mapper.delete(mailbox);
                 return m;
             }
@@ -576,7 +546,4 @@ public class StoreMailboxManager<Id> imp
     public void addGlobalListener(MailboxListener listener, MailboxSession session) throws MailboxException {
         delegatingListener.addGlobalListener(listener, session);
     }
-    
-    
-
 }

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=1137573&r1=1137572&r2=1137573&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 Mon Jun 20 10:07:03 2011
@@ -42,6 +42,7 @@ import org.apache.commons.io.input.TeeIn
 import org.apache.james.mailbox.MailboxException;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageMetaData;
 import org.apache.james.mailbox.MessageRange;
 import org.apache.james.mailbox.MessageResult;
@@ -68,14 +69,19 @@ import org.apache.james.mime4j.parser.Mi
 import com.sun.mail.imap.protocol.MessageSet;
 
 /**
- * Abstract base class for {@link org.apache.james.mailbox.MessageManager} implementations. This abstract
- * class take care of dispatching events to the registered {@link MailboxListener} and so help
- * with handling concurrent {@link MailboxSession}'s. So this is a perfect starting point when writing your 
- * own implementation and don't want to depend on {@link MessageMapper}.
+ * Base class for {@link org.apache.james.mailbox.MessageManager} implementations. 
+ * 
+ * This base class take care of dispatching events to the registered {@link MailboxListener} and so help
+ * with handling concurrent {@link MailboxSession}'s.
+ * 
+ * 
  *
  */
 public class StoreMessageManager<Id> implements org.apache.james.mailbox.MessageManager{
 
+    /**
+     * The minimal Permanent flags the {@link MessageManager} must support
+     */
     protected final static Flags MINIMAL_PERMANET_FLAGS;
     static {
         MINIMAL_PERMANET_FLAGS = new Flags();
@@ -90,9 +96,9 @@ public class StoreMessageManager<Id> imp
     
     private final MailboxEventDispatcher<Id> dispatcher;    
     
-    protected final MessageMapperFactory<Id> mapperFactory;
+    private final MessageMapperFactory<Id> mapperFactory;
 
-    protected final MessageSearchIndex<Id> index;
+    private final MessageSearchIndex<Id> index;
     
     public StoreMessageManager(final MessageMapperFactory<Id> mapperFactory, final MessageSearchIndex<Id> index, final MailboxEventDispatcher<Id> dispatcher, final Mailbox<Id> mailbox) throws MailboxException {
         this.mailbox = mailbox;
@@ -336,6 +342,12 @@ public class StoreMessageManager<Id> imp
         return new SimpleMessage<Id>(internalDate, size, bodyStartOctet, content, flags, propertyBuilder, getMailboxEntity().getMailboxId());
     }
     
+    /**
+     * Add the {@link MailboxListener}
+     * 
+     * @param listener
+     * @throws MailboxException
+     */
     public void addListener(MailboxListener listener) throws MailboxException {
         dispatcher.addMailboxListener(listener);
     }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreSubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreSubscriptionManager.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreSubscriptionManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreSubscriptionManager.java Mon Jun 20 10:07:03 2011
@@ -34,7 +34,7 @@ import org.apache.james.mailbox.store.us
 import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
 
 /**
- * Manages subscriptions.
+ * Manages subscriptions for Users and Mailboxes.
  */
 public class StoreSubscriptionManager implements SubscriptionManager {
 
@@ -70,7 +70,9 @@ public class StoreSubscriptionManager im
     }
 
     /**
-     * Create Subscription for the given user and mailbox
+     * Create Subscription for the given user and mailbox. By default a {@link SimpleSubscription} will get returned.
+     * 
+     * If you need something more special just override this method
      * 
      * @param session
      * @param mailbox

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailbox.java Mon Jun 20 10:07:03 2011
@@ -46,6 +46,8 @@ public class SimpleMailbox<Id> implement
         this.user = mailbox.getUser();
         this.name = mailbox.getName();
         this.uidValidity = mailbox.getUidValidity();
+        this.lastKnownUid = mailbox.getLastKnownUid();
+        this.highestKnownModSeq = mailbox.getHighestKnownModSeq();
     }
 
     /*

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java Mon Jun 20 10:07:03 2011
@@ -143,10 +143,6 @@ public class SimpleMessage<Id> extends A
         seen = flags.contains(Flags.Flag.SEEN);
     }
 
-    public void unsetRecent() {
-        recent = false;
-    }
-
     public InputStream getBodyContent() throws IOException {
         return content.newStream(getBodyStartOctet(), -1);    
     }

Modified: james/mailbox/trunk/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java?rev=1137573&r1=1137572&r2=1137573&view=diff
==============================================================================
--- james/mailbox/trunk/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java (original)
+++ james/mailbox/trunk/tool/src/main/java/org/apache/james/mailbox/copier/MailboxCopierImpl.java Mon Jun 20 10:07:03 2011
@@ -117,7 +117,6 @@ public class MailboxCopierImpl implement
 
                 dstMailboxManager.startProcessingRequest(dstMailboxSession);
                 MessageManager dstMessageManager = dstMailboxManager.getMailbox(mailboxPath, dstMailboxSession);
-                dstMailboxManager.endProcessingRequest(dstMailboxSession);
 
                 int j=0;
                 Iterator<MessageResult> messageResultIterator = srcMessageManager.getMessages(MessageRange.all(), GROUP, srcMailboxSession);
@@ -134,6 +133,7 @@ public class MailboxCopierImpl implement
                     j++;
 
                 }
+                dstMailboxManager.endProcessingRequest(dstMailboxSession);
 
             }
             



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org