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/03/09 15:24:43 UTC

svn commit: r920893 - in /james/imap/trunk: jcr/src/main/java/org/apache/james/imap/jcr/ jcr/src/main/java/org/apache/james/imap/jcr/mail/ jcr/src/main/java/org/apache/james/imap/jcr/mail/model/ jcr/target/ jcr/target/classes/ jcr/target/classes/org/ j...

Author: norman
Date: Tue Mar  9 14:24:42 2010
New Revision: 920893

URL: http://svn.apache.org/viewvc?rev=920893&view=rev
Log:
some more code for JCR (IMAP-93)
javadocs

Added:
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
    james/imap/trunk/jcr/target/
    james/imap/trunk/jcr/target/classes/
    james/imap/trunk/jcr/target/classes/org/
    james/imap/trunk/jcr/target/classes/org/apache/
    james/imap/trunk/jcr/target/classes/org/apache/james/
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/AbstractMailboxMembership.java
Modified:
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java
    james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/model/JPAMailboxMembership.java
    james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
    james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
    james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/SimpleMailboxMembership.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/CountingInputStream.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/MailboxMembershipComparator.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultUtils.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/SimpleMailboxSession.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MailboxMapper.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MessageMapper.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/MailboxMembership.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/transaction/TransactionalMapper.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/SubscriptionMapper.java
    james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/model/Subscription.java

Added: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java?rev=920893&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java Tue Mar  9 14:24:42 2010
@@ -0,0 +1,61 @@
+package org.apache.james.imap.jcr;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.jcr.Session;
+import javax.mail.Flags;
+
+import org.apache.james.imap.jcr.mail.model.JCRHeader;
+import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.store.StoreMailbox;
+import org.apache.james.imap.store.mail.MessageMapper;
+import org.apache.james.imap.store.mail.model.Header;
+import org.apache.james.imap.store.mail.model.Mailbox;
+import org.apache.james.imap.store.mail.model.MailboxMembership;
+import org.apache.james.imap.store.mail.model.PropertyBuilder;
+
+public class JCRMailbox extends StoreMailbox{
+
+    private final Session session;
+
+    public JCRMailbox(Mailbox mailbox, Session session) {
+        super(mailbox);
+        this.session = session;
+    }
+
+    @Override
+    protected MailboxMembership copyMessage(MailboxMembership originalMessage, long uid) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected Header createHeader(int lineNumber, String name, String value) {
+        return new JCRHeader(name, value, lineNumber);
+    }
+
+    @Override
+    protected MailboxMembership createMessage(Date internalDate, long uid, int size, int bodyStartOctet, byte[] document, Flags flags, List<Header> headers, PropertyBuilder propertyBuilder) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected MessageMapper createMessageMapper() {
+        
+        return null;
+    }
+
+    @Override
+    protected Mailbox getMailboxRow() throws MailboxException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected Mailbox reserveNextUid() throws MailboxException {
+        return null;
+    }
+
+}

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailboxManager.java Tue Mar  9 14:24:42 2010
@@ -20,6 +20,7 @@ package org.apache.james.imap.jcr;
 
 import javax.jcr.Session;
 
+import org.apache.james.imap.jcr.mail.JCRMailboxMapper;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.StoreMailbox;
@@ -51,8 +52,7 @@ public class JCRMailboxManager extends S
 
     @Override
     protected MailboxMapper createMailboxMapper() {
-        // TODO Auto-generated method stub
-        return null;
+        return new JCRMailboxMapper(session);
     }
 
     @Override

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java Tue Mar  9 14:24:42 2010
@@ -18,15 +18,21 @@
  ****************************************************************/
 package org.apache.james.imap.jcr.mail;
 
+import java.util.ArrayList;
 import java.util.List;
 
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
 import javax.jcr.PathNotFoundException;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.query.Query;
+import javax.jcr.query.QueryManager;
 
 import org.apache.jackrabbit.util.Text;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.jcr.JCRImapConstants;
+import org.apache.james.imap.jcr.mail.model.JCRMailbox;
 import org.apache.james.imap.mailbox.MailboxNotFoundException;
 import org.apache.james.imap.mailbox.StorageException;
 import org.apache.james.imap.store.mail.MailboxMapper;
@@ -50,7 +56,10 @@ public class JCRMailboxMapper extends No
 
     /*
      * (non-Javadoc)
-     * @see org.apache.james.imap.store.mail.MailboxMapper#countMailboxesWithName(java.lang.String)
+     * 
+     * @see
+     * org.apache.james.imap.store.mail.MailboxMapper#countMailboxesWithName
+     * (java.lang.String)
      */
     public long countMailboxesWithName(String name) throws StorageException {
         String nodeName = Text.unescapeIllegalJcrChars(name);
@@ -118,24 +127,91 @@ public class JCRMailboxMapper extends No
         }
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.apache.james.imap.store.mail.MailboxMapper#findMailboxById(long)
+     */
     public Mailbox findMailboxById(long mailboxId) throws StorageException, MailboxNotFoundException {
-        // TODO Auto-generated method stub
-        return null;
+        try {
+            QueryManager manager = session.getWorkspace().getQueryManager();
+            String queryString = session.getRootNode().getPath() + JCRImapConstants.NODE_DELIMITER + PATH + "//element(" + mailboxId + ")," + JCRMailbox.ID_PROPERTY + ")";
+            Query query = manager.createQuery(queryString, Query.XPATH);
+
+            NodeIterator nodes = query.execute().getNodes();
+            if (nodes.hasNext() == false) {
+                throw new MailboxNotFoundException(mailboxId);
+            } else {
+                return JCRMailbox.from(nodes.nextNode());
+            }
+        } catch (PathNotFoundException e) {
+            throw new MailboxNotFoundException(mailboxId);
+        } catch (RepositoryException e) {
+            throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
+        }
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.james.imap.store.mail.MailboxMapper#findMailboxByName(java
+     * .lang.String)
+     */
     public Mailbox findMailboxByName(String name) throws StorageException, MailboxNotFoundException {
-        // TODO Auto-generated method stub
-        return null;
+        try {
+            Node node = session.getRootNode().getNode(PATH + JCRImapConstants.NODE_DELIMITER + name);
+            return JCRMailbox.from(node);
+        } catch (PathNotFoundException e) {
+            throw new MailboxNotFoundException(name);
+        } catch (RepositoryException e) {
+            throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
+        }
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.james.imap.store.mail.MailboxMapper#findMailboxWithNameLike
+     * (java.lang.String)
+     */
     public List<Mailbox> findMailboxWithNameLike(String name) throws StorageException {
-        // TODO Auto-generated method stub
-        return null;
+        List<Mailbox> mailboxList = new ArrayList<Mailbox>();
+        try {
+            NodeIterator it = session.getRootNode().getNodes(PATH + JCRImapConstants.NODE_DELIMITER + WILDCARD + name + WILDCARD);
+            while (it.hasNext()) {
+                mailboxList.add(JCRMailbox.from(it.nextNode()));
+            }
+        } catch (PathNotFoundException e) {
+            // nothing todo
+        } catch (RepositoryException e) {
+            throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
+        }
+        return mailboxList;
     }
 
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.apache.james.imap.store.mail.MailboxMapper#save(org.apache.james.
+     * imap.store.mail.model.Mailbox)
+     */
     public void save(Mailbox mailbox) throws StorageException {
-        // TODO Auto-generated method stub
-
+        String nodePath = PATH + JCRImapConstants.NODE_DELIMITER + Text.unescapeIllegalJcrChars(mailbox.getName());
+        try {
+            Node node;
+            if (session.getRootNode().hasNode(nodePath)) {
+                node = session.getRootNode().getNode(PATH);
+            } else {
+                node = session.getRootNode().addNode(PATH);
+            }
+            JCRMailbox.copy(node, mailbox);
+            session.save();
+        } catch (RepositoryException e) {
+            throw new StorageException(HumanReadableText.SAVE_FAILED, e);
+        }
     }
 
 }

Added: 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=920893&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java Tue Mar  9 14:24:42 2010
@@ -0,0 +1,67 @@
+package org.apache.james.imap.jcr.mail;
+
+import java.util.List;
+
+import org.apache.james.imap.mailbox.MessageRange;
+import org.apache.james.imap.mailbox.SearchQuery;
+import org.apache.james.imap.mailbox.StorageException;
+import org.apache.james.imap.store.mail.MessageMapper;
+import org.apache.james.imap.store.mail.model.MailboxMembership;
+import org.apache.james.imap.store.transaction.NonTransactionalMapper;
+
+public class JCRMessageMapper extends NonTransactionalMapper implements MessageMapper{
+
+    @Override
+    public long countMessagesInMailbox() throws StorageException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long countUnseenMessagesInMailbox() throws StorageException {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public void delete(MailboxMembership message) throws StorageException {
+        // TODO Auto-generated method stub
+        
+    }
+
+    @Override
+    public List<MailboxMembership> findInMailbox(MessageRange set) throws StorageException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<MailboxMembership> findMarkedForDeletionInMailbox(MessageRange set) throws StorageException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<MailboxMembership> findRecentMessagesInMailbox() throws StorageException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<MailboxMembership> findUnseenMessagesInMailboxOrderByUid() throws StorageException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void save(MailboxMembership message) throws StorageException {
+        // TODO Auto-generated method stub
+        
+    }
+
+    @Override
+    public List<MailboxMembership> searchMailbox(SearchQuery query) throws StorageException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}

Added: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java?rev=920893&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java Tue Mar  9 14:24:42 2010
@@ -0,0 +1,90 @@
+package org.apache.james.imap.jcr.mail.model;
+
+import java.util.Date;
+
+import javax.mail.Flags;
+
+import org.apache.james.imap.store.mail.model.AbstractMailboxMembership;
+import org.apache.james.imap.store.mail.model.Document;
+
+public class JCRMailboxMembership extends AbstractMailboxMembership{
+
+    @Override
+    public Document getDocument() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Date getInternalDate() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public long getMailboxId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public int getSize() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public long getUid() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public boolean isAnswered() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isDeleted() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isDraft() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isFlagged() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isRecent() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public boolean isSeen() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public void setFlags(Flags flags) {
+        // TODO Auto-generated method stub
+        
+    }
+
+    @Override
+    public void unsetRecent() {
+        // TODO Auto-generated method stub
+        
+    }
+
+}

Added: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java?rev=920893&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java Tue Mar  9 14:24:42 2010
@@ -0,0 +1,94 @@
+package org.apache.james.imap.jcr.mail.model;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.james.imap.store.mail.model.Document;
+import org.apache.james.imap.store.mail.model.Header;
+import org.apache.james.imap.store.mail.model.Property;
+import org.apache.james.imap.store.mail.model.PropertyBuilder;
+
+
+public class JCRMessage implements Document{
+
+    
+    private final byte[] content;
+    private final int contentOctets;
+    private final int bodyStartOctet;
+    private final ArrayList<JCRHeader> headers;
+    private final Long textualLineCount;
+    private final String mediaType;
+    private final String subType;
+    private final ArrayList<JCRProperty> properties;
+
+    private JCRMessage(byte[] content, final int bodyStartOctet, final List<JCRHeader> headers, final PropertyBuilder propertyBuilder) {
+        super();
+        this.content = content;
+        this.contentOctets = content.length;
+        this.bodyStartOctet = bodyStartOctet;
+        this.headers = new ArrayList<JCRHeader>(headers);
+        textualLineCount = propertyBuilder.getTextualLineCount();
+        this.mediaType = propertyBuilder.getMediaType();
+        this.subType = propertyBuilder.getSubType();
+        final List<Property> properties = propertyBuilder.toProperties();
+        this.properties = new ArrayList<JCRProperty>(properties.size());
+        int order = 0;
+        for (final Property property:properties) {
+            this.properties.add(new JCRProperty(property.getNamespace(), property.getLocalName(), property.getValue(), order++));
+        }
+        
+    }
+    
+    @Override
+    public ByteBuffer getBodyContent() {
+        return null;
+    }
+
+    @Override
+    public long getBodyOctets() {
+        return contentOctets;
+    }
+
+    @Override
+    public ByteBuffer getFullContent() {
+        return null;
+    }
+
+    @Override
+    public long getFullContentOctets() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public List<Header> getHeaders() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getMediaType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public List<Property> getProperties() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public String getSubType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Long getTextualLineCount() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java Tue Mar  9 14:24:42 2010
@@ -98,6 +98,7 @@ public class JCRProperty extends Abstrac
         int order = new Long(node.getProperty(ORDER_PROPERTY).getLong()).intValue();
         String localname = node.getProperty(LOCALNAME_PROPERTY).getString();
         String value = node.getProperty(VALUE_PROPERTY).getString();
+
         return new JCRProperty(namespace, localname, value, order);
     }
     

Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java (original)
+++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/JPAMailbox.java Tue Mar  9 14:24:42 2010
@@ -38,6 +38,11 @@ import org.apache.james.imap.store.mail.
 import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.imap.store.mail.model.PropertyBuilder;
 
+/**
+ * Abstract base class which should be used from JPA implementations
+ * 
+ *
+ */
 public abstract class JPAMailbox extends StoreMailbox {
 
     protected final EntityManagerFactory entityManagerFactory;

Modified: james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/model/JPAMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/model/JPAMailboxMembership.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/model/JPAMailboxMembership.java (original)
+++ james/imap/trunk/jpa/src/main/java/org/apache/james/imap/jpa/mail/model/JPAMailboxMembership.java Tue Mar  9 14:24:42 2010
@@ -33,8 +33,8 @@ import javax.persistence.ManyToOne;
 import javax.persistence.NamedQueries;
 import javax.persistence.NamedQuery;
 
+import org.apache.james.imap.store.mail.model.AbstractMailboxMembership;
 import org.apache.james.imap.store.mail.model.Document;
-import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.imap.store.mail.model.PropertyBuilder;
 
 @Entity(name="Membership")
@@ -65,7 +65,7 @@ import org.apache.james.imap.store.mail.
     @NamedQuery(name="countMessagesInMailbox",
             query="SELECT COUNT(membership) FROM Membership membership WHERE membership.mailboxId = :idParam")                     
 })
-public class JPAMailboxMembership implements MailboxMembership {
+public class JPAMailboxMembership extends AbstractMailboxMembership {
 
     private static final String TOSTRING_SEPARATOR = " ";
 
@@ -274,32 +274,7 @@ public class JPAMailboxMembership implem
         seen = flags.contains(Flags.Flag.SEEN);
     }
 
-    /**
-     * @see org.apache.james.imap.store.mail.model.MailboxMembership#createFlags()
-     */
-    public Flags createFlags() {
-        final Flags flags = new Flags();
-
-        if (isAnswered()) {
-            flags.add(Flags.Flag.ANSWERED);
-        }
-        if (isDeleted()) {
-            flags.add(Flags.Flag.DELETED);
-        }
-        if (isDraft()) {
-            flags.add(Flags.Flag.DRAFT);
-        }
-        if (isFlagged()) {
-            flags.add(Flags.Flag.FLAGGED);
-        }
-        if (isRecent()) {
-            flags.add(Flags.Flag.RECENT);
-        }
-        if (isSeen()) {
-            flags.add(Flags.Flag.SEEN);
-        }
-        return flags;
-    }
+  
 
     @Override
     public int hashCode() {

Modified: james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java (original)
+++ james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/Mailbox.java Tue Mar  9 14:24:42 2010
@@ -28,12 +28,28 @@ import javax.mail.Flags;
 import org.apache.james.imap.mailbox.MessageResult.FetchGroup;
 
 
+/**
+ * Interface which represent a Mailbox
+ *
+ */
 public interface Mailbox {
 
     public static final long ANONYMOUS_SESSION = 0;
 
+    /**
+     * Return the count 
+     * 
+     * @param mailboxSession
+     * @return count
+     * @throws MailboxException
+     */
     int getMessageCount(MailboxSession mailboxSession) throws MailboxException;
 
+    /**
+     * Return if the Mailbox is writable
+     * 
+     * @return writable
+     */
     boolean isWriteable();
 
     /**

Modified: james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java (original)
+++ james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java Tue Mar  9 14:24:42 2010
@@ -94,6 +94,13 @@ public interface MailboxManager {
      */
     void createMailbox(String mailboxName, MailboxSession mailboxSession) throws MailboxException;
 
+    /**
+     * Delete the mailbox with the name
+     * 
+     * @param mailboxName
+     * @param session
+     * @throws MailboxException
+     */
     void deleteMailbox(String mailboxName, MailboxSession session) throws MailboxException;
 
     /**

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/SimpleMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/SimpleMailboxMembership.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/SimpleMailboxMembership.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/SimpleMailboxMembership.java Tue Mar  9 14:24:42 2010
@@ -25,13 +25,14 @@ import java.util.List;
 
 import javax.mail.Flags;
 
+import org.apache.james.imap.store.mail.model.AbstractMailboxMembership;
 import org.apache.james.imap.store.mail.model.Document;
 import org.apache.james.imap.store.mail.model.Header;
 import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.imap.store.mail.model.Property;
 import org.apache.james.imap.store.mail.model.PropertyBuilder;
 
-public class SimpleMailboxMembership implements MailboxMembership, Document, Comparable<MailboxMembership> {
+public class SimpleMailboxMembership extends AbstractMailboxMembership implements Document, Comparable<MailboxMembership> {
 
     private final long uid;
     private final long mailboxId;
@@ -88,29 +89,6 @@ public class SimpleMailboxMembership imp
     }
 
 
-    public synchronized Flags createFlags() {
-        final Flags flags = new Flags();
-        if (answered) {
-            flags.add(Flags.Flag.ANSWERED);
-        }
-        if (deleted) {
-            flags.add(Flags.Flag.DELETED);
-        }
-        if (draft) {
-            flags.add(Flags.Flag.DRAFT);
-        }
-        if (flagged) {
-            flags.add(Flags.Flag.FLAGGED);
-        }
-        if (recent) {
-            flags.add(Flags.Flag.RECENT);
-        }
-        if (seen) {
-            flags.add(Flags.Flag.SEEN);
-        }
-        return flags;
-    }
-
     public Document getDocument() {
         return this;
     }

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ByteContent.java Tue Mar  9 14:24:42 2010
@@ -39,10 +39,18 @@ public final class ByteContent implement
         size = contents.limit();
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Content#size()
+     */
     public long size() {
         return size;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Content#writeTo(java.nio.channels.WritableByteChannel)
+     */
     public void writeTo(WritableByteChannel channel) throws IOException {
         contents.rewind();
         while (channel.write(contents) > 0) {

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/CountingInputStream.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/CountingInputStream.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/CountingInputStream.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/CountingInputStream.java Tue Mar  9 14:24:42 2010
@@ -37,6 +37,10 @@ final class CountingInputStream extends 
         this.in = in;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see java.io.InputStream#read()
+     */
     public int read() throws IOException {
         int next = in.read();
         if (next > 0) {

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/FullContent.java Tue Mar  9 14:24:42 2010
@@ -31,6 +31,10 @@ import java.util.List;
 import org.apache.james.imap.mailbox.Content;
 import org.apache.james.imap.mailbox.MessageResult;
 
+/**
+ * Content which holds the full content, including {@link Header} objets
+ *
+ */
 public final class FullContent implements Content {
     private final ByteBuffer contents;
 
@@ -57,10 +61,18 @@ public final class FullContent implement
         return result;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Content#size()
+     */
     public long size() {
         return size;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Content#writeTo(java.nio.channels.WritableByteChannel)
+     */
     public void writeTo(WritableByteChannel channel) throws IOException {
         ByteBuffer newLine = ByteBuffer.wrap(ResultUtils.BYTES_NEW_LINE);
         for (final Iterator<MessageResult.Header> it = headers.iterator(); it.hasNext();) {
@@ -77,6 +89,13 @@ public final class FullContent implement
         writeAll(channel, contents);
     }
 
+    /**
+     * Write all 
+     * 
+     * @param channel
+     * @param buffer
+     * @throws IOException
+     */
     private void writeAll(WritableByteChannel channel, ByteBuffer buffer)
             throws IOException {
         while (channel.write(buffer) > 0) {

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/MailboxMembershipComparator.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/MailboxMembershipComparator.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/MailboxMembershipComparator.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/MailboxMembershipComparator.java Tue Mar  9 14:24:42 2010
@@ -32,6 +32,10 @@ public final class MailboxMembershipComp
     
     private MailboxMembershipComparator() {}
     
+    /*
+     * (non-Javadoc)
+     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+     */
     public int compare(MailboxMembership o1, MailboxMembership o2) {
         final long uid = o1.getUid();
         final long otherUid = o2.getUid();

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultUtils.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultUtils.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultUtils.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/ResultUtils.java Tue Mar  9 14:24:42 2010
@@ -43,6 +43,9 @@ import org.apache.james.imap.store.mail.
 import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.mime4j.MimeException;
 
+/**
+ *
+ */
 public class ResultUtils {
 
     public static final byte[] BYTES_NEW_LINE = { 0x0D, 0x0A };
@@ -73,18 +76,38 @@ public class ResultUtils {
         return headers;
     }
 
+    /**
+     * Return the {@link Content} which holds only the Body for the given {@link MailboxMembership}
+     * 
+     * @param membership
+     * @return bodyContent
+     */
     public static Content createBodyContent(MailboxMembership membership) {
         final ByteBuffer bytes = membership.getDocument().getBodyContent();
         final ByteContent result = new ByteContent(bytes);
         return result;
     }
 
+    /**
+     * Return the {@link Content} which holds the full data for the given {@link MailboxMembership}
+     * 
+     * @param membership
+     * @return content
+     */
     public static Content createFullContent(final MailboxMembership membership) {
         final ByteBuffer bytes = membership.getDocument().getFullContent();
         final ByteContent results = new ByteContent(bytes);
         return results;
     }
 
+    /**
+     * Return the {@link MessageResult} for the given {@link MailboxMembership} and {@link FetchGroup}
+     * 
+     * @param message
+     * @param fetchGroup
+     * @return result
+     * @throws MailboxException
+     */
     public static MessageResult loadMessageResult(final MailboxMembership message, final FetchGroup fetchGroup) 
                 throws MailboxException {
 
@@ -203,11 +226,23 @@ public class ResultUtils {
         return result;
     }
 
+    /**
+     * Return an {@link InputStream} which holds the content of the {@link org.apache.james.imap.store.mail.model.Document} which is linked in the {@link MailboxMembership}
+     * 
+     * @param membership
+     * @return stream
+     */
     public static InputStream toInput(final MailboxMembership membership) {
         final org.apache.james.imap.store.mail.model.Document document = membership.getDocument();
         return toInput(document);
     }
 
+    /**
+     * Return an {@link InputStream} which holds the content of the given {@link org.apache.james.imap.store.mail.model.Document}
+     * 
+     * @param document
+     * @return stream
+     */
     public static InputStream toInput(final org.apache.james.imap.store.mail.model.Document document) {
         final List<Header> headers = getSortedHeaders(document);
         final StringBuffer headersToString = new StringBuffer(headers.size() * 50);

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/SimpleMailboxSession.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/SimpleMailboxSession.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/SimpleMailboxSession.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/SimpleMailboxSession.java Tue Mar  9 14:24:42 2010
@@ -62,18 +62,34 @@ public class SimpleMailboxSession implem
         this.localePreferences = localePreferences;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.MailboxSession#getLog()
+     */
     public Log getLog() {
         return log;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.MailboxSession#close()
+     */
     public void close() {
         open = false;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.MailboxSession#getSessionId()
+     */
     public long getSessionId() {
         return sessionId;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.MailboxSession#isOpen()
+     */
     public boolean isOpen() {
         return open;
     }

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailbox.java Tue Mar  9 14:24:42 2010
@@ -74,21 +74,47 @@ public abstract class StoreMailbox imple
         this.tracker = new UidChangeTracker(mailbox.getLastUid());
     }
 
+    /**
+     * Copy the given {@link MailboxMembership} to a new instance with the given uid
+     * 
+     * @param originalMessage
+     * @param uid
+     * @return membershipCopy
+     */
     protected abstract MailboxMembership copyMessage(MailboxMembership originalMessage, long uid);
     
+    /**
+     * Create a new {@link MessageMapper} to use
+     * 
+     * @return mapper
+     */
     protected abstract MessageMapper createMessageMapper();
     
+    
     protected abstract Mailbox getMailboxRow() throws MailboxException;
 
+    /**
+     * Return the Id of the wrapped {@link Mailbox}
+     * 
+     * @return id
+     */
     public long getMailboxId() {
         return mailboxId;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#getMessageCount(org.apache.james.imap.mailbox.MailboxSession)
+     */
     public int getMessageCount(MailboxSession mailboxSession) throws MailboxException {
         final MessageMapper messageMapper = createMessageMapper();
         return (int) messageMapper.countMessagesInMailbox();
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#appendMessage(byte[], java.util.Date, org.apache.james.imap.mailbox.MailboxSession, boolean, javax.mail.Flags)
+     */
     public long appendMessage(byte[] messageBytes, Date internalDate,
             MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet)
     throws MailboxException {
@@ -236,13 +262,39 @@ public abstract class StoreMailbox imple
         return bodyStartOctet;
     }
 
+    /**
+     * Create a new {@link MailboxMembership} for the given data
+     * 
+     * @param internalDate
+     * @param uid
+     * @param size
+     * @param bodyStartOctet
+     * @param document
+     * @param flags
+     * @param headers
+     * @param propertyBuilder
+     * @return membership
+     */
     protected abstract MailboxMembership createMessage(Date internalDate, final long uid, final int size, int bodyStartOctet, 
             final byte[] document, final Flags flags, final List<Header> headers, PropertyBuilder propertyBuilder);
     
+    /**
+     * Create a new {@link Header} for the given data
+     * 
+     * @param lineNumber
+     * @param name
+     * @param value
+     * @return header
+     */
     protected abstract Header createHeader(int lineNumber, String name, String value);
 
+
     protected abstract Mailbox reserveNextUid() throws  MailboxException;
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#getMessages(org.apache.james.imap.mailbox.MessageRange, org.apache.james.imap.mailbox.MessageResult.FetchGroup, org.apache.james.imap.mailbox.MailboxSession)
+     */
     public Iterator<MessageResult> getMessages(final MessageRange set, FetchGroup fetchGroup,
             MailboxSession mailboxSession) throws MailboxException {
         UidRange range = uidRangeForMessageSet(set);
@@ -275,12 +327,7 @@ public abstract class StoreMailbox imple
         }
     }
 
-    public MessageResult fillMessageResult(MailboxMembership message, FetchGroup result) throws MessagingException,
-    MailboxException {
-        return ResultUtils.loadMessageResult(message, result);
-    }
-
-    public synchronized Flags getPermanentFlags() {
+    public Flags getPermanentFlags() {
         Flags permanentFlags = new Flags();
         permanentFlags.add(Flags.Flag.ANSWERED);
         permanentFlags.add(Flags.Flag.DELETED);
@@ -337,6 +384,10 @@ public abstract class StoreMailbox imple
         return count;
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#expunge(org.apache.james.imap.mailbox.MessageRange, org.apache.james.imap.mailbox.MailboxSession)
+     */
     public Iterator<Long> expunge(MessageRange set, MailboxSession mailboxSession) throws MailboxException {
         return doExpunge(set);
     }
@@ -362,6 +413,10 @@ public abstract class StoreMailbox imple
         return uids.iterator();
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#setFlags(javax.mail.Flags, boolean, boolean, org.apache.james.imap.mailbox.MessageRange, org.apache.james.imap.mailbox.MailboxSession)
+     */
     public Map<Long, Flags> setFlags(Flags flags, boolean value, boolean replace,
             MessageRange set, MailboxSession mailboxSession) throws MailboxException {
         return doSetFlags(flags, value, replace, set, mailboxSession);
@@ -419,6 +474,10 @@ public abstract class StoreMailbox imple
         }
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#search(org.apache.james.imap.mailbox.SearchQuery, org.apache.james.imap.mailbox.MailboxSession)
+     */
     public Iterator<Long> search(SearchQuery query, MailboxSession mailboxSession) throws MailboxException {
         final MessageMapper messageMapper = createMessageMapper();
         final List<MailboxMembership> members = messageMapper.searchMailbox(query);
@@ -443,6 +502,10 @@ public abstract class StoreMailbox imple
         return uids.iterator();
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.imap.mailbox.Mailbox#isWriteable()
+     */
     public boolean isWriteable() {
         return true;
     }

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MailboxMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MailboxMapper.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MailboxMapper.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/MailboxMapper.java Tue Mar  9 14:24:42 2010
@@ -25,31 +25,83 @@ import org.apache.james.imap.mailbox.Sto
 import org.apache.james.imap.store.mail.model.Mailbox;
 import org.apache.james.imap.store.transaction.TransactionalMapper;
 
+/**
+ * Mapper for {@link Mailbox}
+ *
+ */
 public interface MailboxMapper extends TransactionalMapper{
     
+    /**
+     * Save the give {@link Mailbox} to the underlying storage
+     * 
+     * @param mailbox
+     * @throws StorageException
+     */
     public abstract void save(Mailbox mailbox) throws StorageException;
 
+    /**
+     * Return the {@link Mailbox} for the given name
+     * 
+     * @param name 
+     * @return mailbox
+     * @throws StorageException
+     * @throws MailboxNotFoundException
+     */
     public abstract Mailbox findMailboxByName(String name)
             throws StorageException, MailboxNotFoundException;
 
     /**
-     * Does the given mailbox have children?
+     * Return if the given {@link Mailbox} has children
+     * 
      * @param mailboxName not null
      * @return true when the mailbox has children, false otherwise
      * @throws StorageException
      */
     public abstract boolean existsMailboxStartingWith(String mailboxName) throws StorageException;
     
+    /**
+     * Delete the given {@link Mailbox} from the underlying storage
+     * 
+     * @param mailbox
+     * @throws StorageException
+     */
     public abstract void delete(Mailbox mailbox) throws StorageException;
 
+    /**
+     * Return a List of {@link Mailbox} which name is like the given name
+     * 
+     * @param name
+     * @return mailboxList
+     * @throws StorageException
+     */
     public abstract List<Mailbox> findMailboxWithNameLike(String name)
             throws StorageException;
 
+    /**
+     * Delete all {@link Mailbox} objects from the underlying storage
+     * 
+     * @throws StorageException
+     */
     public abstract void deleteAll() throws StorageException;
 
+    /**
+     * Return the count of {@link Mailbox} objects with the given name
+     * 
+     * @param name
+     * @return count
+     * @throws StorageException
+     */
     public abstract long countMailboxesWithName(String name)
             throws StorageException;
 
+    /**
+     * Return the {@link Mailbox} for the given id
+     * 
+     * @param mailboxId
+     * @return mailbox
+     * @throws StorageException
+     * @throws MailboxNotFoundException
+     */
     public abstract Mailbox findMailboxById(long mailboxId)
             throws StorageException, MailboxNotFoundException;
 }
\ No newline at end of file

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=920893&r1=920892&r2=920893&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 Tue Mar  9 14:24:42 2010
@@ -20,38 +20,95 @@ package org.apache.james.imap.store.mail
 
 import java.util.List;
 
+import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.SearchQuery;
 import org.apache.james.imap.mailbox.StorageException;
+import org.apache.james.imap.store.mail.model.Document;
 import org.apache.james.imap.store.mail.model.MailboxMembership;
 import org.apache.james.imap.store.transaction.TransactionalMapper;
 
 /**
- * Maps messages in a mailbox.
+ * Maps {@link Document} in a {@link Mailbox}.
  */
 public interface MessageMapper extends TransactionalMapper {
 
+    /**
+     * Return a List of {@link MailboxMembership} which represent the given {@link MessageRange}
+     * @param set
+     * @return list
+     * @throws StorageException
+     */
     public abstract List<MailboxMembership> findInMailbox(MessageRange set)
             throws StorageException;
 
+    /**
+     * Return a List of {@link MailboxMembership} for the given {@link MessageRange} which are marked for deletion 
+     * @param set 
+     * @return list
+     * @throws StorageException
+     */
     public abstract List<MailboxMembership> findMarkedForDeletionInMailbox(
             final MessageRange set)
             throws StorageException;
 
+    /**
+     * Return the count of messages in the mailbox
+     * 
+     * @return count
+     * @throws StorageException
+     */
     public abstract long countMessagesInMailbox()
             throws StorageException;
 
+    /**
+     * Return the count of unseen messages in the mailbox
+     * 
+     * @return unseenCount
+     * @throws StorageException
+     */
     public abstract long countUnseenMessagesInMailbox()
             throws StorageException;
 
+    /**
+     * Return a List of {@link MailboxMembership} which matched the {@link SearchQuery}
+     * @param query
+     * @return
+     * @throws StorageException
+     */
     public abstract List<MailboxMembership> searchMailbox(SearchQuery query) throws StorageException;
 
+    /**
+     * Delete the given {@link MailboxMembership}
+     * 
+     * @param message
+     * @throws StorageException
+     */
     public abstract void delete(MailboxMembership message) throws StorageException;
 
+    /**
+     * Return a List of {@link MailboxMembership} which are unseen. The list is ordered by uid
+     * 
+     * @return list
+     * @throws StorageException
+     */
     public abstract List<MailboxMembership> findUnseenMessagesInMailboxOrderByUid() throws StorageException;
 
+    /**
+     * Return a List of {@link MailboxMembership} which are recent
+     * 
+     * @return recentList
+     * @throws StorageException
+     */
     public abstract List<MailboxMembership> findRecentMessagesInMailbox() throws StorageException;
 
+
+    /**
+     * Save the given {@link MailboxMembership} to the underlying storage
+     * 
+     * @param message
+     * @throws StorageException
+     */
     public abstract void save(MailboxMembership message) throws StorageException;
 
 }
\ No newline at end of file

Added: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/AbstractMailboxMembership.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/AbstractMailboxMembership.java?rev=920893&view=auto
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/AbstractMailboxMembership.java (added)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/AbstractMailboxMembership.java Tue Mar  9 14:24:42 2010
@@ -0,0 +1,57 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.imap.store.mail.model;
+
+import javax.mail.Flags;
+
+/**
+ * Abstract base class for MailboxMembership implementations
+ * 
+ *
+ */
+public abstract class AbstractMailboxMembership implements MailboxMembership{
+
+
+    /**
+     * @see org.apache.james.imap.store.mail.model.MailboxMembership#createFlags()
+     */
+    public Flags createFlags() {
+        final Flags flags = new Flags();
+
+        if (isAnswered()) {
+            flags.add(Flags.Flag.ANSWERED);
+        }
+        if (isDeleted()) {
+            flags.add(Flags.Flag.DELETED);
+        }
+        if (isDraft()) {
+            flags.add(Flags.Flag.DRAFT);
+        }
+        if (isFlagged()) {
+            flags.add(Flags.Flag.FLAGGED);
+        }
+        if (isRecent()) {
+            flags.add(Flags.Flag.RECENT);
+        }
+        if (isSeen()) {
+            flags.add(Flags.Flag.SEEN);
+        }
+        return flags;
+    }
+}

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/MailboxMembership.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/MailboxMembership.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/MailboxMembership.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/mail/model/MailboxMembership.java Tue Mar  9 14:24:42 2010
@@ -29,24 +29,74 @@ public interface MailboxMembership {
 
     public abstract Date getInternalDate();
 
+    /**
+     * Return the mailbox id of the linked mailbox
+     * 
+     * @return mailboxId
+     */
     public abstract long getMailboxId();
 
+    /**
+     * Return the size
+     * 
+     * @return size
+     */
     public abstract int getSize();
 
+    /**
+     * Return the uid
+     * 
+     * @return uid
+     */
     public abstract long getUid();
     
+    /**
+     * Return the linked Document
+     * 
+     * @return document
+     */
     public abstract Document getDocument();
 
+    /**
+     * Return if it was marked as answered
+     * 
+     * @return answered
+     */
     public abstract boolean isAnswered();
 
+    /**
+     * Return if it was mark as deleted
+     * 
+     * @return deleted
+     */
     public abstract boolean isDeleted();
 
+    /**
+     * Return if it was mark as draft
+     * 
+     * @return draft
+     */
     public abstract boolean isDraft();
 
+    /**
+     * Return if it was flagged
+     * 
+     * @return flagged
+     */
     public abstract boolean isFlagged();
 
+    /**
+     * Return if it was marked as recent
+     * 
+     * @return recent
+     */
     public abstract boolean isRecent();
 
+    /**
+     * Return if it was marked as seen
+     * 
+     * @return seen
+     */
     public abstract boolean isSeen();
 
     /**
@@ -55,11 +105,17 @@ public interface MailboxMembership {
      */
     public abstract void unsetRecent();
 
+    /**
+     * Set the Flags 
+     * 
+     * @param flags
+     */
     public abstract void setFlags(Flags flags);
 
     /**
      * Creates a new flags instance populated
      * with the current flag data.
+     * 
      * @return new instance, not null
      */
     public abstract Flags createFlags();

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/transaction/TransactionalMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/transaction/TransactionalMapper.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/transaction/TransactionalMapper.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/transaction/TransactionalMapper.java Tue Mar  9 14:24:42 2010
@@ -21,6 +21,11 @@ package org.apache.james.imap.store.tran
 
 import org.apache.james.imap.mailbox.MailboxException;
 
+/**
+ * Mapper which execute units of work in a {@link Transaction}
+ * @author norman
+ *
+ */
 public interface TransactionalMapper {
     
     /**
@@ -32,13 +37,13 @@ public interface TransactionalMapper {
     public void execute(Transaction transaction) throws MailboxException;
     
     /**
-     * Transaction 
+     * Unit of work executed in a Transaction
      *
      */
     public interface Transaction {
         
         /**
-         * Run code in a Transaction
+         * Run unit of work in a Transaction
          * 
          * @throws MailboxException
          */

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/SubscriptionMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/SubscriptionMapper.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/SubscriptionMapper.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/SubscriptionMapper.java Tue Mar  9 14:24:42 2010
@@ -25,7 +25,7 @@ import org.apache.james.imap.store.trans
 import org.apache.james.imap.store.user.model.Subscription;
 
 /**
- * 
+ * Mapper for {@link Subscription}
  *
  */
 public interface SubscriptionMapper extends TransactionalMapper{

Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/model/Subscription.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/model/Subscription.java?rev=920893&r1=920892&r2=920893&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/model/Subscription.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/user/model/Subscription.java Tue Mar  9 14:24:42 2010
@@ -18,6 +18,10 @@
  ****************************************************************/
 package org.apache.james.imap.store.user.model;
 
+/**
+ * 
+ * Subscription of a mailbox to a user
+ */
 public interface Subscription {
 
     /**
@@ -26,12 +30,14 @@ public interface Subscription {
      * Note that subscriptions must be maintained
      * beyond the lifetime of a particular instance
      * of a mailbox.
+     * 
      * @return not null
      */
     public abstract String getMailbox();
 
     /**
      * Gets the name of the subscribed user.
+     * 
      * @return not null
      */
     public abstract String getUser();



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