Author: norman
Date: Fri Apr 29 16:44:49 2011
New Revision: 1097880

URL: http://svn.apache.org/viewvc?rev=1097880&view=rev
Log:
Add support of User Flags to JCR implementation. See MAILBOX-63

Modified:
    
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
    
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
    
james/mailbox/trunk/jcr/src/main/resources/org/apache/james/mailbox/jcr/imap.cnd

Modified: 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java?rev=1097880&r1=1097879&r2=1097880&view=diff
==============================================================================
--- 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
 (original)
+++ 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
 Fri Apr 29 16:44:49 2011
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxException;
+import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.jcr.mail.model.JCRHeader;
 import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.jcr.mail.model.JCRMessage;
@@ -66,4 +67,13 @@ public class JCRMessageManager extends S
                 size, flags, document, bodyStartOctet, jcrHeaders, 
propertyBuilder, log);
         return message;
     }
+
+    @Override
+    protected Flags getPermanentFlags(MailboxSession session) {
+        Flags perm =  super.getPermanentFlags(session);
+        perm.add(Flags.Flag.USER);
+        return perm;
+    }
+    
+    
 }
\ No newline at end of file

Modified: 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java?rev=1097880&r1=1097879&r2=1097880&view=diff
==============================================================================
--- 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
 (original)
+++ 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
 Fri Apr 29 16:44:49 2011
@@ -72,6 +72,7 @@ public class JCRMessage extends Abstract
     private boolean flagged;
     private boolean recent;
     private boolean seen;
+    private String[] userFlags;
     
     private static final String TOSTRING_SEPARATOR = " ";
 
@@ -82,6 +83,8 @@ public class JCRMessage extends Abstract
     public final static String DELETED_PROPERTY = "jamesMailbox:deleted";
     public final static String DRAFT_PROPERTY =  "jamesMailbox:draft";
     public final static String FLAGGED_PROPERTY = "jamesMailbox:flagged";
+    public final static String USERFLAGS_PROPERTY = "jamesMailbox:userFlags";
+
     public final static String RECENT_PROPERTY = "jamesMailbox:recent";
     public final static String SEEN_PROPERTY = "jamesMailbox:seen";
     public final static String INTERNAL_DATE_PROPERTY = 
"jamesMailbox:internalDate"; 
@@ -135,12 +138,7 @@ public class JCRMessage extends Abstract
         this.mailboxUUID = mailboxUUID;
         this.internalDate = message.getInternalDate();
         this.size = message.getFullContentOctets();
-        this.answered = message.isAnswered();
-        this.deleted = message.isDeleted();
-        this.draft = message.isDraft();
-        this.flagged = message.isFlagged();
-        this.recent = message.isRecent();
-        this.seen = message.isSeen();
+        setFlags(message.createFlags());
         this.uid = uid;
         
         this.logger = logger;
@@ -318,7 +316,7 @@ public class JCRMessage extends Abstract
         node.setProperty(FLAGGED_PROPERTY, isFlagged());
         node.setProperty(RECENT_PROPERTY, isRecent());
         node.setProperty(SEEN_PROPERTY, isSeen());
-
+        node.setProperty(USERFLAGS_PROPERTY, createFlags().getUserFlags());
         // This stuff is only ever changed on a new message
         // so if it is persistent we don'T need to set all the of this.
         //
@@ -393,6 +391,11 @@ public class JCRMessage extends Abstract
     }
     
     @Override
+    protected String[] createUserFlags() {
+        return userFlags;
+    }
+
+    @Override
     protected int getBodyStartOctet() {
         if (isPersistent()) {
             try {
@@ -645,6 +648,7 @@ public class JCRMessage extends Abstract
                         flags.contains(Flags.Flag.RECENT));
                 node.setProperty(SEEN_PROPERTY,
                         flags.contains(Flags.Flag.SEEN));
+                node.setProperty(USERFLAGS_PROPERTY, flags.getUserFlags());
             } catch (RepositoryException e) {
                 logger.error("Unable to set flags", e);
             }
@@ -655,6 +659,7 @@ public class JCRMessage extends Abstract
             flagged = flags.contains(Flags.Flag.FLAGGED);
             recent = flags.contains(Flags.Flag.RECENT);
             seen = flags.contains(Flags.Flag.SEEN);
+            userFlags = flags.getUserFlags();
         }
     }
 

Modified: 
james/mailbox/trunk/jcr/src/main/resources/org/apache/james/mailbox/jcr/imap.cnd
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/resources/org/apache/james/mailbox/jcr/imap.cnd?rev=1097880&r1=1097879&r2=1097880&view=diff
==============================================================================
--- 
james/mailbox/trunk/jcr/src/main/resources/org/apache/james/mailbox/jcr/imap.cnd
 (original)
+++ 
james/mailbox/trunk/jcr/src/main/resources/org/apache/james/mailbox/jcr/imap.cnd
 Fri Apr 29 16:44:49 2011
@@ -49,6 +49,7 @@
     - jamesMailbox:recent (BOOLEAN) 
     - jamesMailbox:seen (BOOLEAN) 
     - jamesMailbox:internalDate (DATE) 
+    - jamesMailbox:userFlags (STRING) multiple 
     - jamesMailbox:messageBodyStartOctet (LONG) mandatory
     - jamesMailbox:messageTextualLineCount (LONG)
     - jamesMailbox:messageSubType (String) mandatory



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to