Author: norman
Date: Sun Mar 21 16:43:42 2010
New Revision: 925822

URL: http://svn.apache.org/viewvc?rev=925822&view=rev
Log:
More rework on node tree. This layout seems to be usable now ;) (IMAP-120)

Modified:
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.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/JCRMessageMapper.java
    
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
    james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java?rev=925822&r1=925821&r2=925822&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRImapConstants.java
 Sun Mar 21 16:43:42 2010
@@ -36,9 +36,5 @@ public interface JCRImapConstants {
         * Delimiter for Nodes
         */
        public static final String NODE_DELIMITER = "/";
-       
-       /**
-        * Prefix for all imap related properties
-        */
-       public static final String PROPERTY_PREFIX ="";//"imap:";
+
 }

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=925822&r1=925821&r2=925822&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 21 16:43:42 2010
@@ -49,7 +49,7 @@ import org.apache.james.imap.store.mail.
  */
 public class JCRMailboxMapper extends AbstractJCRMapper implements 
MailboxMapper {
 
-    public final String PATH = PROPERTY_PREFIX + "mailboxes";
+    public final String PATH =  "mailboxes";
     private final Log logger;
 
     public JCRMailboxMapper(final Session session, final int scaling,final Log 
logger) {

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=925822&r1=925821&r2=925822&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 21 16:43:42 2010
@@ -383,7 +383,6 @@ public class JCRMessageMapper extends Ab
     public void save(MailboxMembership message) throws StorageException {
         JCRMailboxMembership membership = (JCRMailboxMembership) message;
         try {
-            Node mailboxNode = getSession().getNodeByUUID(uuid);
             //JCRUtils.createNodeRecursive(getSession().getRootNode(), 
mailboxN);
             Node messageNode = null;
             
@@ -392,9 +391,21 @@ public class JCRMessageMapper extends Ab
             }
 
             if (messageNode == null) {
+                Node mailboxNode = getSession().getNodeByUUID(uuid);
+                Node membershipsNode;
+                
+                if (mailboxNode.hasNode("mailboxMemberships")) {
+                    membershipsNode = 
mailboxNode.getNode("mailboxMemberships");
+                } else {
+                    membershipsNode = 
mailboxNode.addNode("mailboxMemberships","imap:mailboxMemberships");
+                }
+                
                 // TODO: Maybe we should use some kind of hashes for scaling 
here
-                String path = mailboxNode.getPath() + NODE_DELIMITER + 
JCRUtils.escapePath(String.valueOf(membership.getUid()));
+                String path = membershipsNode.getPath() + NODE_DELIMITER + 
JCRUtils.escapePath(String.valueOf(membership.getUid()));
+                
+                // strip leading /
                 path = path.substring(1, path.length());
+                
                 messageNode = 
getSession().getRootNode().addNode(path,"imap:mailboxMembership");
                 messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
             }

Modified: 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java?rev=925822&r1=925821&r2=925822&view=diff
==============================================================================
--- 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
 (original)
+++ 
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/user/JCRSubscriptionMapper.java
 Sun Mar 21 16:43:42 2010
@@ -46,7 +46,7 @@ import org.apache.james.imap.store.user.
 public class JCRSubscriptionMapper extends AbstractJCRMapper implements 
SubscriptionMapper {
 
     private final Log log;
-    private final static String PATH = PROPERTY_PREFIX + "subscriptions";
+    private final static String PATH =  "subscriptions";
 
     public JCRSubscriptionMapper(final Session session, final int 
scaling,final Log log) {
         super(session, scaling);

Modified: 
james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd?rev=925822&r1=925821&r2=925822&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd 
(original)
+++ james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd 
Sun Mar 21 16:43:42 2010
@@ -51,7 +51,7 @@
     - imap:mailboxUidValidity (LONG) mandatory
     - imap:mailboxName (STRING) mandatory
     - imap:mailboxLastUid (LONG) mandatory
-    + * (imap:mailboxMembership) multiple 
+    + mailboxMemberships (imap:mailboxMemberships) 
  
 [imap:mailboxMembership] >  mix:referenceable, nt:base
     - imap:mailboxUUID (REFERENCE) mandatory < 'imap:mailbox'
@@ -66,5 +66,6 @@
     - imap:internalDate (DATE) mandatory
     + message (imap:message) mandatory
 
-    
+ [imap:mailboxMemberships] > nt:unstructured
+    + imap:mailboxMembership multiple   
    



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

Reply via email to