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/13 19:50:40 UTC

svn commit: r922647 - in /james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr: ./ mail/ mail/model/

Author: norman
Date: Sat Mar 13 18:50:39 2010
New Revision: 922647

URL: http://svn.apache.org/viewvc?rev=922647&view=rev
Log:
More work on JCR which included some more work on XPath queries (IMAP-93)

Added:
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalMailbox.java
Modified:
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserMailboxManager.java
    james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserSubscriptionManager.java
    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/JCRMailbox.java
    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/JCRUtils.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/mail/model/JCRMailbox.java

Added: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalMailbox.java?rev=922647&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalMailbox.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalMailbox.java Sat Mar 13 18:50:39 2010
@@ -0,0 +1,60 @@
+/****************************************************************
+ * 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.jcr;
+
+import javax.jcr.LoginException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+
+import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.mailbox.MailboxSession;
+import org.apache.james.imap.mailbox.SubscriptionException;
+import org.apache.james.imap.store.PasswordAwareUser;
+
+public class JCRGlobalMailbox extends JCRMailbox{
+
+	private final String username;
+	private final char[] password;
+	
+	public JCRGlobalMailbox(final org.apache.james.imap.jcr.mail.model.JCRMailbox mailbox, MailboxSession session,
+			Repository repository, String workspace, String username, char[] password,Log log) {
+		super(mailbox, session, repository, workspace, log);
+		this.username = username;
+		this.password = password;
+	}
+
+	@Override
+	  protected Session getSession(PasswordAwareUser user) throws SubscriptionException {
+        try {
+            return getRepository().login(new SimpleCredentials(username, password), getWorkspace());
+        } catch (LoginException e) {
+            throw new SubscriptionException(HumanReadableText.INVALID_LOGIN, e);
+        } catch (NoSuchWorkspaceException e) {
+            throw new SubscriptionException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e);
+        } catch (RepositoryException e) {
+            throw new SubscriptionException(HumanReadableText.GENERIC_FAILURE_DURING_PROCESSING, e);
+
+        }
+    }
+}

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserMailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserMailboxManager.java?rev=922647&r1=922646&r2=922647&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserMailboxManager.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserMailboxManager.java Sat Mar 13 18:50:39 2010
@@ -29,7 +29,9 @@ import org.apache.james.imap.api.display
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.Authenticator;
+import org.apache.james.imap.store.StoreMailbox;
 import org.apache.james.imap.store.Subscriber;
+import org.apache.james.imap.store.mail.model.Mailbox;
 
 /**
  * JCR based MailboxManager which use the same username and password to obtain a
@@ -40,19 +42,30 @@ import org.apache.james.imap.store.Subsc
 public class JCRGlobalUserMailboxManager extends JCRMailboxManager {
 
     private final String username;
-    private final String password;
+    private final char[] password; 
 
     public JCRGlobalUserMailboxManager(final Authenticator authenticator, final Subscriber subscriber, final Repository repository, final String workspace, final String username, final String password) {
         super(authenticator, subscriber, repository, workspace);
 
         this.username = username;
-        this.password = password;
+        if (password != null) {
+        	this.password = password.toCharArray();
+        } else {
+        	this.password = new char[0];
+        }
     }
 
+
+    @Override
+    protected StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session) {
+        JCRMailbox mailbox = new JCRGlobalMailbox((org.apache.james.imap.jcr.mail.model.JCRMailbox) mailboxRow, session, getRepository(), getWorkspace(), username, password, getLog());
+        return mailbox;
+    }
+    
     @Override
     protected Session getSession(MailboxSession s) throws MailboxException {
         try {
-            return getRepository().login(new SimpleCredentials(username, password.toCharArray()), getWorkspace());
+            return getRepository().login(new SimpleCredentials(username, password), getWorkspace());
         } catch (LoginException e) {
             throw new MailboxException(HumanReadableText.INVALID_LOGIN, e);
         } catch (NoSuchWorkspaceException e) {

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserSubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserSubscriptionManager.java?rev=922647&r1=922646&r2=922647&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserSubscriptionManager.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRGlobalUserSubscriptionManager.java Sat Mar 13 18:50:39 2010
@@ -37,19 +37,23 @@ import org.apache.james.imap.store.Passw
  */
 public class JCRGlobalUserSubscriptionManager extends JCRSubscriptionManager {
 
-    private String username;
-    private String password;
+    private final String username;
+    private final char[] password;
 
     public JCRGlobalUserSubscriptionManager(final Repository repository, final String workspace, final String username, final String password) {
         super(repository, workspace);
         this.username = username;
-        this.password = password;
+        if (password != null) {
+        	this.password = password.toCharArray();
+        } else {
+        	this.password = new char[0];
+        }    
     }
 
     @Override
     protected Session getSession(PasswordAwareUser user) throws SubscriptionException {
         try {
-            return getRepository().login(new SimpleCredentials(username, password.toCharArray()), getWorkspace());
+            return getRepository().login(new SimpleCredentials(username, password), getWorkspace());
         } catch (LoginException e) {
             throw new SubscriptionException(HumanReadableText.INVALID_LOGIN, e);
         } catch (NoSuchWorkspaceException e) {

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=922647&r1=922646&r2=922647&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 Sat Mar 13 18:50:39 2010
@@ -32,5 +32,5 @@ public interface JCRImapConstants {
 	/**
 	 * Prefix for all imap related properties
 	 */
-	public static final String PROPERTY_PREFIX ="imap:";
+	public static final String PROPERTY_PREFIX ="";//"imap:";
 }

Modified: 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=922647&r1=922646&r2=922647&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMailbox.java Sat Mar 13 18:50:39 2010
@@ -52,7 +52,7 @@ public class JCRMailbox extends StoreMai
     private final Repository repository;
     private final String workspace;
     private final Log log;
-    private String uuid;
+    private final String uuid;
     
     public JCRMailbox(final org.apache.james.imap.jcr.mail.model.JCRMailbox mailbox, final MailboxSession session, final Repository repository, final String workspace, final Log log) {
         super(mailbox, session );

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=922647&r1=922646&r2=922647&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 Sat Mar 13 18:50:39 2010
@@ -35,7 +35,6 @@ import org.apache.james.imap.jcr.mail.JC
 import org.apache.james.imap.mailbox.BadCredentialsException;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
-import org.apache.james.imap.mailbox.StorageException;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.imap.store.PasswordAwareMailboxSession;
 import org.apache.james.imap.store.PasswordAwareUser;
@@ -65,8 +64,8 @@ public class JCRMailboxManager extends S
 
     @Override
     protected StoreMailbox createMailbox(Mailbox mailboxRow, MailboxSession session) {
-        // TODO Auto-generated method stub
-        return null;
+        JCRMailbox mailbox = new JCRMailbox((org.apache.james.imap.jcr.mail.model.JCRMailbox) mailboxRow, session, getRepository(), getWorkspace(), getLog());
+        return mailbox;
     }
 
     @Override
@@ -117,20 +116,12 @@ public class JCRMailboxManager extends S
      */
     public MailboxSession login(String userid, String passwd, Log log) throws BadCredentialsException, MailboxException {
         if (login(userid, passwd)) {
-
             return new PasswordAwareMailboxSession(randomId(), userid, passwd, log, getDelimiter(), new ArrayList<Locale>());
         } else {
             throw new BadCredentialsException();
         }
     }
     
-    public void deleteEverything() throws StorageException {
-        try {
-            repository.login().getRootNode().remove();
-        } catch (RepositoryException e) {
-            throw new StorageException(HumanReadableText.DELETED_FAILED, e);
-        }
-    }
 
     /**
      * Return the JCR workspace

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java?rev=922647&r1=922646&r2=922647&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRUtils.java Sat Mar 13 18:50:39 2010
@@ -27,9 +27,11 @@ public class JCRUtils implements JCRImap
 		
 		for (int i = 0; i < subNodes.length; i++ ) {
 			String path = subNodes[i];
+			/*
 			if (path.startsWith(PROPERTY_PREFIX) == false) {
 				pathBuf.append(PROPERTY_PREFIX);
 			}
+			*/
 			pathBuf.append(Text.escapeIllegalJcrChars(path));
 			
 			if (i +1 != subNodes.length) {

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=922647&r1=922646&r2=922647&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 Sat Mar 13 18:50:39 2010
@@ -26,10 +26,12 @@ 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 javax.jcr.query.QueryResult;
 
 import org.apache.commons.logging.Log;
 import org.apache.jackrabbit.JcrConstants;
-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.JCRUtils;
@@ -47,9 +49,8 @@ import org.apache.james.imap.store.trans
  */
 public class JCRMailboxMapper extends NonTransactionalMapper implements MailboxMapper,JCRImapConstants {
 
-    private final static String WILDCARD = "*";
     private final Session session;
-    private final String PATH = PROPERTY_PREFIX + "mailboxes";
+    public final String PATH = PROPERTY_PREFIX + "mailboxes";
     private Log logger;
 
     public JCRMailboxMapper(final Session session, final Log logger) {
@@ -65,16 +66,16 @@ public class JCRMailboxMapper extends No
      * (java.lang.String)
      */
     public long countMailboxesWithName(String name) throws StorageException {
-        String nodeName = Text.unescapeIllegalJcrChars(name);
-
         try {
-            boolean found = session.getRootNode().hasNode(JCRUtils.createPath(PATH, nodeName));
-            if (found) {
-                return 1;
-            }
+        	QueryManager manager = session.getWorkspace().getQueryManager();
+        	String queryString = "//" + PATH + "//element(*)[@" + JCRMailbox.NAME_PROPERTY + "='" + name + "']";
+        	QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
+        	NodeIterator it = result.getNodes();
+        	return it.getSize();
         } catch (PathNotFoundException e) {
             // not found
         } catch (RepositoryException e) {
+        	e.printStackTrace();
             throw new StorageException(HumanReadableText.COUNT_FAILED, e);
         }
         return 0;
@@ -88,9 +89,9 @@ public class JCRMailboxMapper extends No
      * .imap.store.mail.model.Mailbox)
      */
     public void delete(Mailbox mailbox) throws StorageException {
-        String nodeName = Text.unescapeIllegalJcrChars(mailbox.getName());
         try {
-            session.getRootNode().getNode(JCRUtils.createPath(PATH, nodeName)).remove();
+        	session.getNodeByUUID(((JCRMailbox) mailbox).getUUID()).remove();
+            session.save();
         } catch (PathNotFoundException e) {
             // mailbox does not exists..
         } catch (RepositoryException e) {
@@ -111,6 +112,7 @@ public class JCRMailboxMapper extends No
         } catch (PathNotFoundException e) {
             // nothing todo
         } catch (RepositoryException e) {
+        	
             throw new StorageException(HumanReadableText.DELETED_FAILED, e);
         }
     }
@@ -124,7 +126,11 @@ public class JCRMailboxMapper extends No
      */
     public boolean existsMailboxStartingWith(String mailboxName) throws StorageException {
         try {
-            return session.getRootNode().getNodes(JCRUtils.createPath(PATH,  mailboxName) + WILDCARD).hasNext();
+        	QueryManager manager = session.getWorkspace().getQueryManager();
+        	String queryString = "//" + PATH + "//element(*)[jcr:contains(@" + JCRMailbox.NAME_PROPERTY + ",'" + mailboxName + "*')]";
+        	QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
+        	NodeIterator it = result.getNodes();
+        	return it.hasNext();
         } catch (RepositoryException e) {
             throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
         }
@@ -158,7 +164,8 @@ public class JCRMailboxMapper extends No
     }
 
     public Mailbox findMailboxByUUID(String uuid) throws StorageException, MailboxNotFoundException {
-        try {
+        System.out.println("UUID="+uuid);
+    	try {
             return new JCRMailbox(session.getNodeByUUID(uuid),logger);
         } catch (PathNotFoundException e) {
             throw new MailboxNotFoundException(uuid);
@@ -176,9 +183,16 @@ public class JCRMailboxMapper extends No
      */
     public Mailbox findMailboxByName(String name) throws StorageException, MailboxNotFoundException {
         try {
-            Node node = session.getRootNode().getNode(JCRUtils.createPath(PATH, name));
-            return new JCRMailbox(node, logger);
+        	QueryManager manager = session.getWorkspace().getQueryManager();
+        	String queryString = "//" + PATH + "//element(*)[@" + JCRMailbox.NAME_PROPERTY + "='" + name + "']";
+        	QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
+        	NodeIterator it = result.getNodes();
+        	if (it.hasNext()) {
+                return new JCRMailbox(it.nextNode(), logger);
+        	}
+            throw new MailboxNotFoundException(name);
         } catch (PathNotFoundException e) {
+        	e.printStackTrace();
             throw new MailboxNotFoundException(name);
         } catch (RepositoryException e) {
             throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
@@ -194,11 +208,14 @@ public class JCRMailboxMapper extends No
      */
     public List<Mailbox> findMailboxWithNameLike(String name) throws StorageException {
         List<Mailbox> mailboxList = new ArrayList<Mailbox>();
-        try {
-            NodeIterator it = session.getRootNode().getNodes(PATH + NODE_DELIMITER + WILDCARD + name + WILDCARD);
-            while (it.hasNext()) {
+        try {        	
+        	QueryManager manager = session.getWorkspace().getQueryManager();
+        	String queryString = "//" + PATH + "//element(*)[jcr:contains(@" + JCRMailbox.NAME_PROPERTY + ",'*" + name + "*')]";
+        	QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
+        	NodeIterator it = result.getNodes();
+        	while (it.hasNext()) {
                 mailboxList.add(new JCRMailbox(it.nextNode(), logger));
-            }
+            }            
         } catch (PathNotFoundException e) {
             // nothing todo
         } catch (RepositoryException e) {
@@ -219,13 +236,15 @@ public class JCRMailboxMapper extends No
         try {
             Node node;
             if (session.getRootNode().hasNode(nodePath)) {
-                node = session.getRootNode().getNode(PATH);
+                node = session.getRootNode().getNode(nodePath);
             } else {
-                node = session.getRootNode().addNode(PATH, JcrConstants.MIX_REFERENCEABLE);
+                node = session.getRootNode().addNode(nodePath, JcrConstants.MIX_REFERENCEABLE);
             }
             ((JCRMailbox)mailbox).merge(node);
             session.save();
+            System.out.println("U="+node.getUUID());
         } catch (RepositoryException e) {
+        	e.printStackTrace();
             throw new StorageException(HumanReadableText.SAVE_FAILED, e);
         }
     }

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=922647&r1=922646&r2=922647&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 Sat Mar 13 18:50:39 2010
@@ -66,7 +66,7 @@ public class JCRMessageMapper extends No
     public long countMessagesInMailbox() throws StorageException {
        
         try {
-            String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"==" + uuid +"]";
+            String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
             QueryManager manager = session.getWorkspace().getQueryManager();
             QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
             return result.getNodes().getSize();
@@ -323,6 +323,13 @@ public class JCRMessageMapper extends No
         }
     }
 
+    /**
+     * Generate the XPath query for the SearchQuery
+     * 
+     * @param uuid
+     * @param query
+     * @return xpathQuery
+     */
     private String formulateXPath(String uuid, SearchQuery query) {
         final StringBuilder queryBuilder = new StringBuilder(50);
         queryBuilder.append("//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] ");

Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailbox.java?rev=922647&r1=922646&r2=922647&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailbox.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailbox.java Sat Mar 13 18:50:39 2010
@@ -188,7 +188,7 @@ public class JCRMailbox implements Mailb
     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);
             }



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