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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to