Author: norman
Date: Thu Dec 16 11:18:10 2010
New Revision: 1049933

URL: http://svn.apache.org/viewvc?rev=1049933&view=rev
Log:
Fix query for last uid and make sure we close the Session

Modified:
    
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRCachingUidProvider.java

Modified: 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRCachingUidProvider.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRCachingUidProvider.java?rev=1049933&r1=1049932&r2=1049933&view=diff
==============================================================================
--- 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRCachingUidProvider.java
 (original)
+++ 
james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRCachingUidProvider.java
 Thu Dec 16 11:18:10 2010
@@ -53,10 +53,11 @@ public class JCRCachingUidProvider exten
      * @see 
org.apache.james.mailbox.store.CachingUidProvider#getLastUid(org.apache.james.mailbox.MailboxSession,
 org.apache.james.mailbox.store.mail.model.Mailbox)
      */
     protected long getLastUid(MailboxSession session, Mailbox<String> mailbox) 
throws MailboxException {
+        Session s = null;
         try {
-            Session s = repos.login(session);
+            s = repos.login(session);
             // we use order by because without it count will always be 0 in 
jackrabbit
-            String queryString = "/jcr:root/" + 
ISO9075.encodePath(s.getNodeByIdentifier(mailbox.getMailboxId()).getPath()) + 
"//element(*,jamesMailbox:message) order by @" + JCRMessage.UID_PROPERTY + " 
desc";
+            String queryString = "/jcr:root/" + 
ISO9075.encodePath(s.getNodeByIdentifier(mailbox.getMailboxId()).getPath()) + 
"//element(*,jamesMailbox:message) order by @" + JCRMessage.UID_PROPERTY + " 
descending";
             QueryManager manager = s.getWorkspace().getQueryManager();
             Query q = manager.createQuery(queryString, Query.XPATH);
             q.setLimit(1);
@@ -64,11 +65,14 @@ public class JCRCachingUidProvider exten
             NodeIterator nodes = result.getNodes();
             if (nodes.hasNext()) {
                 return 
nodes.nextNode().getProperty(JCRMessage.UID_PROPERTY).getLong();
-            } else {
-                return 0;
             }
+            return 0;
         } catch (RepositoryException e) {
             throw new MailboxException("Unable to count unseen messages in 
mailbox " + mailbox, e);
+        } finally {
+            if (s != null) {
+                repos.logout(session);
+            }
         }
     }
 



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

Reply via email to