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/16 11:08:45 UTC
svn commit: r923658 - in
/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr: ./ mail/ user/
Author: norman
Date: Tue Mar 16 10:08:45 2010
New Revision: 923658
URL: http://svn.apache.org/viewvc?rev=923658&view=rev
Log:
some pending changes I had on my local workstation (IMAP-93)
Added:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java
Removed:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRMapper.java
Modified:
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/JCRSubscriptionManager.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
Added: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java?rev=923658&view=auto
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java (added)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java Tue Mar 16 10:08:45 2010
@@ -0,0 +1,78 @@
+/****************************************************************
+ * 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.RepositoryException;
+import javax.jcr.Session;
+
+import org.apache.james.imap.api.display.HumanReadableText;
+import org.apache.james.imap.mailbox.MailboxException;
+import org.apache.james.imap.store.transaction.AbstractTransactionalMapper;
+
+
+
+/**
+ * Abstract Mapper base class for Level 1 Implementations of JCR. So no real transaction management is used.
+ *
+ *
+ */
+public abstract class AbstractJCRMapper extends AbstractTransactionalMapper implements JCRImapConstants{
+
+ private final Session session;
+
+ public AbstractJCRMapper(final Session session) {
+ this.session = session;
+ }
+
+ protected Session getSession() {
+ return session;
+ }
+
+ public void destroy() {
+ }
+
+ /**
+ * Begin is not supported by level 1 JCR implementations, so just do nothing
+ */
+ protected void begin() throws MailboxException {
+ }
+
+ /**
+ * Just call save on the underlying JCR Session, because level 1 JCR implementation does not offer Transactions
+ */
+ protected void commit() throws MailboxException {
+ try {
+ if (session.hasPendingChanges()) {
+ session.save();
+ }
+ } catch (RepositoryException e) {
+ throw new MailboxException(HumanReadableText.SAVE_FAILED, e);
+ }
+
+ }
+
+ /**
+ * Rollback is not supported by level 1 JCR implementations, so just do nothing
+ */
+ protected void rollback() throws MailboxException {
+ // no rollback supported by level 1 jcr
+ }
+
+
+}
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=923658&r1=923657&r2=923658&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 Tue Mar 16 10:08:45 2010
@@ -100,24 +100,17 @@ public class JCRMailbox extends StoreMai
@Override
protected MessageMapper createMessageMapper(MailboxSession session) throws MailboxException {
PasswordAwareUser user = (PasswordAwareUser)getMailboxSession().getUser();
-
+
+ JCRMessageMapper messageMapper = new JCRMessageMapper(getSession(user), getMailboxUUID(), log);
- JCRMessageMapper messageMapper = (JCRMessageMapper) session.getAttributes().get(MESSAGE_MAPPER);
- if (messageMapper == null) {
- messageMapper = new JCRMessageMapper(getSession(user), getMailboxUUID(), log);
- session.getAttributes().put(MESSAGE_MAPPER, messageMapper);
- }
return messageMapper;
-
+
}
protected JCRMailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException {
- JCRMailboxMapper mapper = (JCRMailboxMapper) session.getAttributes().get(MAILBOX_MAPPER);
- if (mapper == null) {
- PasswordAwareUser user = (PasswordAwareUser)getMailboxSession().getUser();
- mapper = new JCRMailboxMapper(getSession(user), log);
- session.getAttributes().put(MAILBOX_MAPPER, mapper);
- }
+
+ PasswordAwareUser user = (PasswordAwareUser) getMailboxSession().getUser();
+ JCRMailboxMapper mapper = new JCRMailboxMapper(getSession(user), log);
return mapper;
}
@@ -170,10 +163,6 @@ public class JCRMailbox extends StoreMai
@Override
protected void onLogout(MailboxSession session) {
-
- JCRMessageMapper mapper = (JCRMessageMapper) session.getAttributes().get(MESSAGE_MAPPER);
- if (mapper != null) {
- mapper.destroy();
- }
+
}
}
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=923658&r1=923657&r2=923658&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 Tue Mar 16 10:08:45 2010
@@ -71,11 +71,7 @@ public class JCRMailboxManager extends S
@Override
protected MailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException {
- JCRMailboxMapper mapper = (JCRMailboxMapper) session.getAttributes().get(JCRMailbox.MAILBOX_MAPPER);
- if (mapper == null) {
- mapper = new JCRMailboxMapper(getSession(session), logger);
- session.getAttributes().put(JCRMailbox.MAILBOX_MAPPER, mapper);
- }
+ JCRMailboxMapper mapper = new JCRMailboxMapper(getSession(session), getLog());
return mapper;
}
@@ -145,9 +141,6 @@ public class JCRMailboxManager extends S
@Override
protected void onLogout(MailboxSession session) {
- JCRMailboxMapper mapper = (JCRMailboxMapper) session.getAttributes().get(JCRMailbox.MAILBOX_MAPPER);
- if (mapper != null) {
- mapper.destroy();
- }
+
}
}
Modified: james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java?rev=923658&r1=923657&r2=923658&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java (original)
+++ james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/JCRSubscriptionManager.java Tue Mar 16 10:08:45 2010
@@ -60,13 +60,8 @@ public class JCRSubscriptionManager exte
protected SubscriptionMapper createMapper(MailboxSession session) throws SubscriptionException {
PasswordAwareUser pUser = (PasswordAwareUser) session.getUser();
- // check if we have already a mapper for the session
- JCRSubscriptionMapper mapper = (JCRSubscriptionMapper) session.getAttributes().get(MAPPER);
- if (mapper == null) {
- // no mapper found so create one an store it
- mapper = new JCRSubscriptionMapper(getSession(pUser), logger);
- session.getAttributes().put(MAPPER, mapper);
- }
+ JCRSubscriptionMapper mapper = new JCRSubscriptionMapper(getSession(pUser), logger);
+
return mapper;
}
@@ -110,9 +105,6 @@ public class JCRSubscriptionManager exte
@Override
protected void onLogout(MailboxSession session) {
- JCRSubscriptionMapper mapper = (JCRSubscriptionMapper) session.getAttributes().get(MAPPER);
- if (mapper != null) {
- mapper.destroy();
- }
+
}
}
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=923658&r1=923657&r2=923658&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 Mar 16 10:08:45 2010
@@ -33,7 +33,7 @@ import javax.jcr.query.QueryResult;
import org.apache.commons.logging.Log;
import org.apache.jackrabbit.JcrConstants;
import org.apache.james.imap.api.display.HumanReadableText;
-import org.apache.james.imap.jcr.JCRMapper;
+import org.apache.james.imap.jcr.AbstractJCRMapper;
import org.apache.james.imap.jcr.JCRUtils;
import org.apache.james.imap.jcr.mail.model.JCRMailbox;
import org.apache.james.imap.mailbox.MailboxNotFoundException;
@@ -46,7 +46,7 @@ import org.apache.james.imap.store.mail.
*
*
*/
-public class JCRMailboxMapper extends JCRMapper implements MailboxMapper {
+public class JCRMailboxMapper extends AbstractJCRMapper implements MailboxMapper {
public final String PATH = PROPERTY_PREFIX + "mailboxes";
private Log logger;
@@ -66,8 +66,6 @@ public class JCRMailboxMapper extends JC
public long countMailboxesWithName(String name) throws StorageException {
try {
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailbox.NAME_PROPERTY + "='" + name + "']";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -98,10 +96,7 @@ public class JCRMailboxMapper extends JC
*/
public void delete(Mailbox mailbox) throws StorageException {
try {
- getSession().refresh(true);
-
getSession().getNodeByUUID(((JCRMailbox) mailbox).getUUID()).remove();
- getSession().save();
} catch (PathNotFoundException e) {
// mailbox does not exists..
} catch (RepositoryException e) {
@@ -117,10 +112,7 @@ public class JCRMailboxMapper extends JC
*/
public void deleteAll() throws StorageException {
try {
- getSession().refresh(true);
-
getSession().getRootNode().getNode(PATH).remove();
- getSession().save();
} catch (PathNotFoundException e) {
// nothing todo
@@ -140,8 +132,6 @@ public class JCRMailboxMapper extends JC
*/
public boolean existsMailboxStartingWith(String mailboxName) throws StorageException {
try {
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
String queryString = "//" + PATH + "//element(*)[jcr:like(@" + JCRMailbox.NAME_PROPERTY + ",'" +mailboxName+"%')]";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -163,8 +153,6 @@ public class JCRMailboxMapper extends JC
public Mailbox findMailboxByUUID(String uuid) throws StorageException, MailboxNotFoundException {
try {
- getSession().refresh(true);
-
return new JCRMailbox(getSession().getNodeByUUID(uuid),logger);
} catch (PathNotFoundException e) {
throw new MailboxNotFoundException(uuid);
@@ -182,8 +170,6 @@ public class JCRMailboxMapper extends JC
*/
public Mailbox findMailboxByName(String name) throws StorageException, MailboxNotFoundException {
try {
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailbox.NAME_PROPERTY + "='" + name + "']";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -210,8 +196,6 @@ public class JCRMailboxMapper extends JC
public List<Mailbox> findMailboxWithNameLike(String name) throws StorageException {
List<Mailbox> mailboxList = new ArrayList<Mailbox>();
try {
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
String queryString = "//" + PATH + "//element(*)[jcr:like(@" + JCRMailbox.NAME_PROPERTY + ",'%" + name + "%')]";
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -238,8 +222,6 @@ public class JCRMailboxMapper extends JC
String nodePath = JCRUtils.createPath(PATH,mailbox.getName());
try {
- getSession().refresh(true);
-
createPathIfNotExists();
JCRMailbox jcrMailbox = (JCRMailbox)mailbox;
@@ -254,7 +236,6 @@ public class JCRMailboxMapper extends JC
jcrMailbox.merge(node);
- getSession().save();
} catch (RepositoryException e) {
e.printStackTrace();
throw new StorageException(HumanReadableText.SAVE_FAILED, e);
@@ -265,21 +246,11 @@ public class JCRMailboxMapper extends JC
JCRMailbox mailbox = (JCRMailbox) findMailboxByUUID(uuid);
mailbox.consumeUid();
- try {
- getSession().refresh(true);
-
- getSession().save();
- } catch (PathNotFoundException e) {
- throw new MailboxNotFoundException(uuid);
- } catch (RepositoryException e) {
- throw new StorageException(HumanReadableText.SAVE_FAILED, e);
- }
return mailbox;
}
protected void createPathIfNotExists() throws RepositoryException, PathNotFoundException {
- getSession().refresh(true);
if (getSession().getRootNode().hasNode(JCRUtils.createPath(PATH)) == false) {
getSession().getRootNode().addNode(JCRUtils.createPath(PATH));
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=923658&r1=923657&r2=923658&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 Tue Mar 16 10:08:45 2010
@@ -33,7 +33,7 @@ import javax.jcr.query.QueryResult;
import org.apache.commons.logging.Log;
import org.apache.jackrabbit.JcrConstants;
import org.apache.james.imap.api.display.HumanReadableText;
-import org.apache.james.imap.jcr.JCRMapper;
+import org.apache.james.imap.jcr.AbstractJCRMapper;
import org.apache.james.imap.jcr.JCRUtils;
import org.apache.james.imap.jcr.mail.model.JCRMailboxMembership;
import org.apache.james.imap.mailbox.MessageRange;
@@ -45,7 +45,7 @@ import org.apache.james.imap.mailbox.Sea
import org.apache.james.imap.store.mail.MessageMapper;
import org.apache.james.imap.store.mail.model.MailboxMembership;
-public class JCRMessageMapper extends JCRMapper implements MessageMapper {
+public class JCRMessageMapper extends AbstractJCRMapper implements MessageMapper {
private final static String PATH = PROPERTY_PREFIX + "mailboxMemberships";
private final Log logger;
@@ -66,8 +66,6 @@ public class JCRMessageMapper extends JC
public long countMessagesInMailbox() throws StorageException {
try {
- getSession().refresh(true);
-
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -99,8 +97,6 @@ public class JCRMessageMapper extends JC
public long countUnseenMessagesInMailbox() throws StorageException {
try {
- getSession().refresh(true);
-
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" + JCRMailboxMembership.SEEN_PROPERTY +"='false']";
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -133,10 +129,8 @@ public class JCRMessageMapper extends JC
JCRMailboxMembership membership = (JCRMailboxMembership) message;
if (membership.isPersistent()) {
try {
- getSession().refresh(true);
getSession().getNodeByUUID(membership.getUUID()).remove();
- getSession().save();
} catch (RepositoryException e) {
e.printStackTrace();
throw new StorageException(HumanReadableText.DELETED_FAILED, e);
@@ -183,8 +177,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + ">=" + uid + "]";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -199,8 +191,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + "=" + uid + "]";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -214,9 +204,6 @@ public class JCRMessageMapper extends JC
private List<MailboxMembership> findMessagesInMailboxBetweenUIDs(String uuid, long from, long to) throws RepositoryException {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + ">=" + from + "] AND [@" + JCRMailboxMembership.UID_PROPERTY + "<=" + to + "]";
-
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -232,10 +219,7 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
-
- getSession().refresh(true);
-
-
+
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -251,10 +235,7 @@ public class JCRMessageMapper extends JC
private List<MailboxMembership> findDeletedMessagesInMailboxAfterUID(String uuid, long uid) throws RepositoryException {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + ">=" + uid + "] AND [@" + JCRMailboxMembership.DELETED_PROPERTY+ "='true']";
-
- getSession().refresh(true);
-
-
+
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -268,9 +249,6 @@ public class JCRMessageMapper extends JC
private List<MailboxMembership> findDeletedMessagesInMailboxWithUID(String uuid, long uid) throws RepositoryException {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + "=" + uid + "] AND [@" + JCRMailboxMembership.DELETED_PROPERTY+ "='true']";
-
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -286,8 +264,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" + JCRMailboxMembership.UID_PROPERTY + ">=" + from + "] AND [@" + JCRMailboxMembership.UID_PROPERTY + "<=" + to + "] AND [@" + JCRMailboxMembership.DELETED_PROPERTY+ "='true']";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -303,8 +279,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" + JCRMailboxMembership.DELETED_PROPERTY+ "='true']";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -364,8 +338,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" + JCRMailboxMembership.RECENT_PROPERTY +"='true']";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -391,8 +363,6 @@ public class JCRMessageMapper extends JC
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
String queryString = "//" + PATH + "//element(*)[@" + JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" + JCRMailboxMembership.SEEN_PROPERTY +"='false'] order by @" + JCRMailboxMembership.UID_PROPERTY + " ASC";
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString, Query.XPATH).execute();
@@ -417,8 +387,6 @@ public class JCRMessageMapper extends JC
public void save(MailboxMembership message) throws StorageException {
JCRMailboxMembership membership = (JCRMailboxMembership) message;
try {
- getSession().refresh(true);
-
createPathIfNotExists();
Node messageNode;
@@ -431,9 +399,6 @@ public class JCRMessageMapper extends JC
}
membership.merge(messageNode);
-
- getSession().save();
-
} catch (RepositoryException e) {
e.printStackTrace();
@@ -453,9 +418,6 @@ public class JCRMessageMapper extends JC
try {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
final String xpathQuery = formulateXPath(uuid, query);
-
- getSession().refresh(true);
-
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(xpathQuery, Query.XPATH).execute();
@@ -507,8 +469,6 @@ public class JCRMessageMapper extends JC
protected void createPathIfNotExists() throws RepositoryException, PathNotFoundException {
- getSession().refresh(true);
-
if (getSession().getRootNode().hasNode(JCRUtils.createPath(PATH)) == false) {
getSession().getRootNode().addNode(JCRUtils.createPath(PATH));
}
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=923658&r1=923657&r2=923658&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 Tue Mar 16 10:08:45 2010
@@ -32,7 +32,7 @@ import javax.jcr.query.QueryResult;
import org.apache.commons.logging.Log;
import org.apache.james.imap.api.display.HumanReadableText;
-import org.apache.james.imap.jcr.JCRMapper;
+import org.apache.james.imap.jcr.AbstractJCRMapper;
import org.apache.james.imap.jcr.JCRUtils;
import org.apache.james.imap.jcr.Persistent;
import org.apache.james.imap.jcr.user.model.JCRSubscription;
@@ -46,7 +46,7 @@ import org.apache.james.imap.store.user.
* ends in a "real" action
*
*/
-public class JCRSubscriptionMapper extends JCRMapper implements SubscriptionMapper {
+public class JCRSubscriptionMapper extends AbstractJCRMapper implements SubscriptionMapper {
private final Log log;
private final static String PATH = PROPERTY_PREFIX + "subscriptions";
@@ -71,7 +71,6 @@ public class JCRSubscriptionMapper exten
Node node = ((Persistent) subscription).getNode();
node.remove();
- getSession().save();
} catch (PathNotFoundException e) {
// do nothing
} catch (RepositoryException e) {
@@ -145,18 +144,22 @@ public class JCRSubscriptionMapper exten
String nodename = JCRUtils.createPath(PATH, username, mailbox);
try {
createPathIfNotExists(PATH);
+
+ // just a hack for now
+ createPathIfNotExists(JCRUtils.createPath(PATH,username));
+
Node node;
- JCRSubscription sub = (JCRSubscription) subscription;
- if (sub.isPersistent() == false) {
- node = getSession().getRootNode().getNode(nodename);
-
+ JCRSubscription sub = (JCRSubscription) findFindMailboxSubscriptionForUser(username, mailbox);
+
+ // its a new subscription
+ if (sub == null) {
+ node = getSession().getRootNode().addNode(nodename);
} else {
node = sub.getNode();
}
// Copy new properties to the node
- sub.merge(node);
+ ((JCRSubscription)subscription).merge(node);
- getSession().save();
} catch (RepositoryException e) {
e.printStackTrace();
throw new SubscriptionException(HumanReadableText.SAVE_FAILED, e);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org