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/07/20 08:19:08 UTC
svn commit: r965731 -
/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.java
Author: norman
Date: Tue Jul 20 06:19:07 2010
New Revision: 965731
URL: http://svn.apache.org/viewvc?rev=965731&view=rev
Log:
Only search in the right namespace
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/JCRMailboxMapper.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=965731&r1=965730&r2=965731&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 Tue Jul 20 06:19:07 2010
@@ -32,6 +32,7 @@ import javax.jcr.query.QueryResult;
import org.apache.commons.logging.Log;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.util.ISO9075;
import org.apache.jackrabbit.util.Text;
import org.apache.james.imap.api.MailboxPath;
import org.apache.james.imap.api.display.HumanReadableText;
@@ -125,7 +126,7 @@ public class JCRMailboxMapper extends Ab
QueryManager manager = getSession().getWorkspace().getQueryManager();
- String queryString = "/jcr:root/" + MAILBOXES_PATH + "//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name+ "' and @" + JCRMailbox.NAMESPACE_PROPERTY +"='" + namespace + "' and @" + JCRMailbox.USER_PROPERTY + "='" + user + "']";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH + "/" + ISO9075.encodePath(path.getNamespace()) + "//element(*,jamesMailbox:mailbox)[@" + JCRMailbox.NAME_PROPERTY + "='" + name+ "' and @" + JCRMailbox.NAMESPACE_PROPERTY +"='" + namespace + "' and @" + JCRMailbox.USER_PROPERTY + "='" + user + "']";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
NodeIterator it = result.getNodes();
if (it.hasNext()) {
@@ -135,6 +136,8 @@ public class JCRMailboxMapper extends Ab
} catch (PathNotFoundException e) {
throw new MailboxNotFoundException(path);
} catch (RepositoryException e) {
+ e.printStackTrace();
+
throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
}
}
@@ -156,7 +159,7 @@ public class JCRMailboxMapper extends Ab
String namespace = Text.escapeIllegalXpathSearchChars(path.getNamespace());
QueryManager manager = getSession().getWorkspace().getQueryManager();
- String queryString = "/jcr:root/" + MAILBOXES_PATH + "//element(*,jamesMailbox:mailbox)[jcr:like(@" + JCRMailbox.NAME_PROPERTY + ",'%" + name + "%') and @" + JCRMailbox.NAMESPACE_PROPERTY +"='" + namespace + "' and @" + JCRMailbox.USER_PROPERTY + "='" + user + "']";
+ String queryString = "/jcr:root/" + MAILBOXES_PATH + "/" + ISO9075.encodePath(path.getNamespace()) + "//element(*,jamesMailbox:mailbox)[jcr:like(@" + JCRMailbox.NAME_PROPERTY + ",'%" + name + "%') and @" + JCRMailbox.NAMESPACE_PROPERTY +"='" + namespace + "' and @" + JCRMailbox.USER_PROPERTY + "='" + user + "']";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
NodeIterator it = result.getNodes();
while (it.hasNext()) {
@@ -165,6 +168,8 @@ public class JCRMailboxMapper extends Ab
} catch (PathNotFoundException e) {
// nothing todo
} catch (RepositoryException e) {
+ e.printStackTrace();
+
throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
}
return mailboxList;
@@ -251,7 +256,7 @@ public class JCRMailboxMapper extends Ab
QueryManager manager = getSession().getWorkspace()
.getQueryManager();
- String queryString = "/jcr:root/" + MAILBOXES_PATH
+ String queryString = "/jcr:root/" + MAILBOXES_PATH + "/" + ISO9075.encodePath(mailbox.getNamespace())
+ "//element(*,jamesMailbox:mailbox)[jcr:like(@"
+ JCRMailbox.NAME_PROPERTY + ",'" + name + MailboxConstants.DEFAULT_DELIMITER_STRING + "%') and @" + JCRMailbox.NAMESPACE_PROPERTY +"='" + namespace + "' and @" + JCRMailbox.USER_PROPERTY + "='" + user + "']";
QueryResult result = manager.createQuery(queryString, Query.XPATH)
@@ -259,6 +264,7 @@ public class JCRMailboxMapper extends Ab
NodeIterator it = result.getNodes();
return it.hasNext();
} catch (RepositoryException e) {
+ e.printStackTrace();
throw new StorageException(HumanReadableText.SEARCH_FAILED, e);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org