Author: norman
Date: Sun Mar 14 20:46:03 2010
New Revision: 922953

URL: http://svn.apache.org/viewvc?rev=922953&view=rev
Log:
Small fixes so the message will only created once under the MessageMembership 
node (IMAP-93)

Modified:
    
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/JCRMessageMapper.java
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java

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=922953&r1=922952&r2=922953&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
 Sun Mar 14 20:46:03 2010
@@ -234,7 +234,6 @@ public class JCRMailboxMapper extends JC
                 node.addMixin(JcrConstants.MIX_REFERENCEABLE);
             }
             ((JCRMailbox)mailbox).merge(node);
-            System.out.println("MAILBOX" + mailbox.getName());
             getSession().save();
         } catch (RepositoryException e) {
                e.printStackTrace();

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java?rev=922953&r1=922952&r2=922953&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMessageMapper.java
 Sun Mar 14 20:46:03 2010
@@ -130,6 +130,7 @@ public class JCRMessageMapper extends JC
         if (membership.isPersistent()) {
             try {
                 getSession().getNodeByUUID(membership.getUUID()).remove();
+                getSession().save();
             } catch (RepositoryException e) {
                 e.printStackTrace();
                 throw new StorageException(HumanReadableText.DELETED_FAILED, 
e);
@@ -212,8 +213,9 @@ public class JCRMessageMapper extends JC
     }
 
     private List<MailboxMembership> findMessagesInMailbox(String uuid) throws 
RepositoryException {
+        
         List<MailboxMembership> list = new ArrayList<MailboxMembership>();
-        String queryString = "//" + PATH + "//element(*)[@" + 
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "']";
+        String queryString = "//" + PATH + "//element(*)[@" + 
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
         QueryManager manager = getSession().getWorkspace().getQueryManager();
         QueryResult result = manager.createQuery(queryString, 
Query.XPATH).execute();
 
@@ -313,9 +315,7 @@ public class JCRMessageMapper extends JC
             createPathIfNotExists();
             
             if (membership.isPersistent()) {
-
                 messageNode = getSession().getNodeByUUID(membership.getUUID());
-
             } else {
                 messageNode = 
getSession().getRootNode().addNode(JCRUtils.createPath(PATH, 
String.valueOf(membership.getUid())));
                 messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);

Modified: 
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=922953&r1=922952&r2=922953&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
 Sun Mar 14 20:46:03 2010
@@ -53,6 +53,8 @@ public class JCRMailboxMembership extend
        public final static String INTERNAL_DATE_PROPERTY = PROPERTY_PREFIX
                        + "internalDate";
 
+       public final static String MESSAGE_NODE = "message";
+       
        private String mailboxUUID;
        private long uid;
        private Date internalDate;
@@ -240,8 +242,7 @@ public class JCRMailboxMembership extend
                                return 
node.getProperty(DELETED_PROPERTY).getBoolean();
 
                        } catch (RepositoryException e) {
-                               logger
-                                               .error("Unable to access 
property " + DELETED_PROPERTY,
+                               logger.error("Unable to access property " + 
DELETED_PROPERTY,
                                                                e);
                        }
                        return false;
@@ -278,8 +279,7 @@ public class JCRMailboxMembership extend
                                return 
node.getProperty(FLAGGED_PROPERTY).getBoolean();
 
                        } catch (RepositoryException e) {
-                               logger
-                                               .error("Unable to access 
property " + FLAGGED_PROPERTY,
+                               logger.error("Unable to access property " + 
FLAGGED_PROPERTY,
                                                                e);
                        }
                        return false;
@@ -333,19 +333,18 @@ public class JCRMailboxMembership extend
        public void setFlags(Flags flags) {
                if (isPersistent()) {
                        try {
-                               node.getProperty(ANSWERED_PROPERTY).setValue(
+                               node.setProperty(ANSWERED_PROPERTY,
                                                
flags.contains(Flags.Flag.ANSWERED));
-                               node.getProperty(DELETED_PROPERTY).setValue(
+                               node.setProperty(DELETED_PROPERTY,
                                                
flags.contains(Flags.Flag.DELETED));
-                               node.getProperty(DRAFT_PROPERTY).setValue(
+                               node.setProperty(DRAFT_PROPERTY,
                                                
flags.contains(Flags.Flag.DRAFT));
-                               node.getProperty(FLAGGED_PROPERTY).setValue(
+                               node.setProperty(FLAGGED_PROPERTY,
                                                
flags.contains(Flags.Flag.FLAGGED));
-                               node.getProperty(RECENT_PROPERTY).setValue(
+                               node.setProperty(RECENT_PROPERTY,
                                                
flags.contains(Flags.Flag.RECENT));
-                               node.getProperty(SEEN_PROPERTY).setValue(
+                               node.setProperty(SEEN_PROPERTY,
                                                
flags.contains(Flags.Flag.SEEN));
-
                        } catch (RepositoryException e) {
                                logger.error("Unable to set flags", e);
                        }
@@ -381,7 +380,7 @@ public class JCRMailboxMembership extend
        public String getUUID() {
                if (isPersistent()) {
                        try {
-                               return 
node.getProperty(JcrConstants.JCR_UUID).getString();
+                               return node.getUUID();
                        } catch (RepositoryException e) {
                                logger.error("Unable to access property "
                                                + JcrConstants.JCR_UUID, e);
@@ -429,8 +428,13 @@ public class JCRMailboxMembership extend
                cal.setTime(internalDate);
                node.setProperty(INTERNAL_DATE_PROPERTY, cal);
 
-               Node messageNode = node.addNode("message");
-               messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
+               Node messageNode;
+               if (node.hasNode(MESSAGE_NODE)) {
+                   messageNode = node.getNode(MESSAGE_NODE);
+               } else {
+               messageNode = node.addNode("message");
+               messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
+               }
                message.merge(messageNode);
 
                this.node = node;



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

Reply via email to