Author: norman
Date: Sun Mar 21 11:33:23 2010
New Revision: 925754
URL: http://svn.apache.org/viewvc?rev=925754&view=rev
Log:
more work on using CND and organize the node tree (IMAP-120)
Modified:
james/imap/trunk/deployment/src/test/resources/log4j.properties
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.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/JCRHeader.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
Modified: james/imap/trunk/deployment/src/test/resources/log4j.properties
URL:
http://svn.apache.org/viewvc/james/imap/trunk/deployment/src/test/resources/log4j.properties?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
--- james/imap/trunk/deployment/src/test/resources/log4j.properties (original)
+++ james/imap/trunk/deployment/src/test/resources/log4j.properties Sun Mar 21
11:33:23 2010
@@ -1,4 +1,4 @@
-log4j.rootLogger=WARN, A1
+log4j.rootLogger=ERROR, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
Modified:
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=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/AbstractJCRMapper.java
Sun Mar 21 11:33:23 2010
@@ -81,6 +81,7 @@ public abstract class AbstractJCRMapper
session.save();
}
} catch (RepositoryException e) {
+ e.printStackTrace();
throw new MailboxException(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=925754&r1=925753&r2=925754&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
Sun Mar 21 11:33:23 2010
@@ -46,7 +46,7 @@ import org.apache.james.imap.store.mail.
public class JCRMessageMapper extends AbstractJCRMapper implements
MessageMapper {
- private final static String PATH = PROPERTY_PREFIX + "mailboxMemberships";
+ private final static String PATH = "mailboxes";
private final Log logger;
private final String uuid;
@@ -64,7 +64,7 @@ public class JCRMessageMapper extends Ab
*/
public long countMessagesInMailbox() throws StorageException {
try {
- String queryString = "//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"']";
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator nodes = result.getNodes();
@@ -94,7 +94,7 @@ public class JCRMessageMapper extends Ab
public long countUnseenMessagesInMailbox() throws StorageException {
try {
- String queryString = "//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.SEEN_PROPERTY +"='false']";
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.SEEN_PROPERTY +"='false']";
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
NodeIterator nodes = result.getNodes();
@@ -172,7 +172,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership> findMessagesInMailboxAfterUID(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 + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + ">=" + uid + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -186,7 +186,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership> findMessagesInMailboxWithUID(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 + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + "=" + uid + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -200,7 +200,7 @@ public class JCRMessageMapper extends Ab
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 + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + ">=" + from + "] AND [@" +
JCRMailboxMembership.UID_PROPERTY + "<=" + to + "] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -215,7 +215,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership> findMessagesInMailbox(String uuid) throws
RepositoryException {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
- String queryString = "//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
getSession().refresh(true);
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -231,7 +231,7 @@ public class JCRMessageMapper extends Ab
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'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + ">=" + uid + "] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -245,7 +245,7 @@ public class JCRMessageMapper extends Ab
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'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + "=" + uid + "] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -259,7 +259,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership>
findDeletedMessagesInMailboxBetweenUIDs(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 + "] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY + "='" + uuid + "'] AND [@" +
JCRMailboxMembership.UID_PROPERTY + ">=" + from + "] AND [@" +
JCRMailboxMembership.UID_PROPERTY + "<=" + to + "] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -274,7 +274,7 @@ public class JCRMessageMapper extends Ab
private List<MailboxMembership> findDeletedMessagesInMailbox(String uuid)
throws RepositoryException {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
- String queryString = "//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.DELETED_PROPERTY+ "='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager = getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -333,7 +333,7 @@ public class JCRMessageMapper extends Ab
try {
List<MailboxMembership> list = new ArrayList<MailboxMembership>();
- String queryString = "//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.RECENT_PROPERTY +"='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.RECENT_PROPERTY +"='true'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -357,7 +357,7 @@ public class JCRMessageMapper extends Ab
public List<MailboxMembership> findUnseenMessagesInMailbox() throws
StorageException {
try {
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;
+ String queryString = "//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] AND [@" +
JCRMailboxMembership.SEEN_PROPERTY +"='false'] order by @" +
JCRMailboxMembership.UID_PROPERTY;
QueryManager manager =
getSession().getWorkspace().getQueryManager();
QueryResult result = manager.createQuery(queryString,
Query.XPATH).execute();
@@ -383,7 +383,8 @@ public class JCRMessageMapper extends Ab
public void save(MailboxMembership message) throws StorageException {
JCRMailboxMembership membership = (JCRMailboxMembership) message;
try {
- JCRUtils.createNodeRecursive(getSession().getRootNode(), PATH);
+ Node mailboxNode = getSession().getNodeByUUID(uuid);
+ //JCRUtils.createNodeRecursive(getSession().getRootNode(),
mailboxN);
Node messageNode = null;
if (membership.isPersistent()) {
@@ -392,8 +393,9 @@ public class JCRMessageMapper extends Ab
if (messageNode == null) {
// TODO: Maybe we should use some kind of hashes for scaling
here
- String path = JCRUtils.escapePath(PATH,
String.valueOf(membership.getUid()));
- messageNode = getSession().getRootNode().addNode(path);
+ String path = mailboxNode.getPath() + NODE_DELIMITER +
JCRUtils.escapePath(String.valueOf(membership.getUid()));
+ path = path.substring(1, path.length());
+ messageNode =
getSession().getRootNode().addNode(path,"imap:mailboxMembership");
messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
}
membership.merge(messageNode);
@@ -439,7 +441,7 @@ public class JCRMessageMapper extends Ab
*/
private String formulateXPath(String uuid, SearchQuery query) {
final StringBuilder queryBuilder = new StringBuilder(50);
- queryBuilder.append("//" + PATH + "//element(*)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] ");
+ queryBuilder.append("//" + PATH +
"//element(*,imap:mailboxMembership)[@" +
JCRMailboxMembership.MAILBOX_UUID_PROPERTY +"='" + uuid +"'] ");
final List<Criterion> criteria = query.getCriterias();
if (criteria.size() == 1) {
final Criterion firstCriterion = criteria.get(0);
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRHeader.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRHeader.java?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRHeader.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRHeader.java
Sun Mar 21 11:33:23 2010
@@ -22,7 +22,6 @@ import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.apache.commons.logging.Log;
-import org.apache.jackrabbit.JcrConstants;
import org.apache.james.imap.jcr.Persistent;
import org.apache.james.imap.jcr.JCRImapConstants;
import org.apache.james.imap.store.mail.model.AbstractComparableHeader;
@@ -36,9 +35,9 @@ import org.apache.james.imap.store.mail.
public class JCRHeader extends AbstractComparableHeader implements
JCRImapConstants, Persistent{
private static final String TOSTRING_SEP = " ";
- public final static String FIELDNAME_PROPERTY = PROPERTY_PREFIX +
"headerFieldName";
- public final static String VALUE_PROPERTY = PROPERTY_PREFIX +
"headerFalue";
- public final static String LINENUMBER_PROPERTY = PROPERTY_PREFIX +
"headerLineNumber";
+ public final static String FIELDNAME_PROPERTY = "imap:headerFieldName";
+ public final static String VALUE_PROPERTY = "imap:headerValue";
+ public final static String LINENUMBER_PROPERTY = "imap:headerLineNumber";
private String fieldName;
private String value;
@@ -147,25 +146,15 @@ public class JCRHeader extends AbstractC
this.value = null;
*/
}
-
-
- public String getUUID() {
- if (isPersistent()) {
- try {
- return node.getUUID();
- } catch (RepositoryException e) {
- logger.error("Unable to access property " +
JcrConstants.JCR_UUID, e);
- }
- }
- return null;
- }
-
+
@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
- result = PRIME * result + getUUID().hashCode();
+ result = PRIME * result + getFieldName().hashCode();
+ result = PRIME * result + getValue().hashCode();
+
return result;
}
@@ -178,14 +167,13 @@ public class JCRHeader extends AbstractC
if (getClass() != obj.getClass())
return false;
final JCRHeader other = (JCRHeader) obj;
- if (getUUID() != other.getUUID())
+ if (getValue() != other.getValue() || getFieldName() !=
other.getFieldName())
return false;
return true;
}
public String toString() {
final String retValue = "Header ( "
- + "UUID = " + this.getUUID() + TOSTRING_SEP
+ "lineNumber = " + this.getLineNumber() + TOSTRING_SEP
+ "field = " + this.getFieldName() + TOSTRING_SEP
+ "value = " + this.getValue() + TOSTRING_SEP
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMailboxMembership.java
Sun Mar 21 11:33:23 2010
@@ -44,23 +44,19 @@ public class JCRMailboxMembership extend
Persistent, JCRImapConstants {
private static final String TOSTRING_SEPARATOR = " ";
- public final static String MAILBOX_UUID_PROPERTY = PROPERTY_PREFIX
- + "mailboxUUID";
- public final static String UID_PROPERTY = PROPERTY_PREFIX + "uid";
- public final static String SIZE_PROPERTY = PROPERTY_PREFIX + "size";
- public final static String ANSWERED_PROPERTY = PROPERTY_PREFIX
- + "answered";
- public final static String DELETED_PROPERTY = PROPERTY_PREFIX
- + "deleted";
- public final static String DRAFT_PROPERTY = PROPERTY_PREFIX + "draft";
- public final static String FLAGGED_PROPERTY = PROPERTY_PREFIX +
"flagged";
- public final static String RECENT_PROPERTY = PROPERTY_PREFIX
- + "recent";
- public final static String SEEN_PROPERTY = PROPERTY_PREFIX + "seen";
- public final static String INTERNAL_DATE_PROPERTY = PROPERTY_PREFIX
- + "internalDate";
+ public final static String MAILBOX_UUID_PROPERTY = "imap:mailboxUUID";
+ public final static String UID_PROPERTY = "imap:uid";
+ public final static String SIZE_PROPERTY = "imap:size";
+ public final static String ANSWERED_PROPERTY = "imap:answered";
+ public final static String DELETED_PROPERTY = "imap:deleted";
+ public final static String DRAFT_PROPERTY = "imap:draft";
+ public final static String FLAGGED_PROPERTY = "imap:flagged";
+ public final static String RECENT_PROPERTY = "imap:recent";
+ public final static String SEEN_PROPERTY = "imap:seen";
+ public final static String INTERNAL_DATE_PROPERTY = "imap:internalDate";
+ public final static String MESSAGE_NODE = "message";
- public final static String MESSAGE_NODE = "message";
+ public final static String MESSAGE_NODE_TYPE = "imap:message";
private String mailboxUUID;
private long uid;
@@ -460,7 +456,7 @@ public class JCRMailboxMembership extend
if (node.hasNode(MESSAGE_NODE)) {
messageNode = node.getNode(MESSAGE_NODE);
} else {
- messageNode = node.addNode(MESSAGE_NODE);
+ messageNode = node.addNode(MESSAGE_NODE, MESSAGE_NODE_TYPE);
messageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
}
((JCRMessage)getDocument()).merge(messageNode);
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRMessage.java
Sun Mar 21 11:33:23 2010
@@ -58,13 +58,16 @@ public class JCRMessage extends Abstract
private List<JCRProperty> properties;
private int bodyStartOctet;
- public final static String BODY_START_OCTET_PROPERTY = PROPERTY_PREFIX +
"messageBodyStartOctet";
- public final static String FULL_CONTENT_OCTETS_PROPERTY = PROPERTY_PREFIX
+ "messageFullContentOctets";
- public final static String HEADERS_NODE = PROPERTY_PREFIX +
"messageHeaders";
- public final static String PROPERTIES_NODE = PROPERTY_PREFIX +
"messageProperties";
+ public final static String BODY_START_OCTET_PROPERTY =
"imap:messageBodyStartOctet";
+ public final static String FULL_CONTENT_OCTETS_PROPERTY =
"imap:messageFullContentOctets";
+ public final static String HEADERS_NODE_TYPE = "imap:messageHeaders";
+ public final static String HEADERS_NODE = "messageHeaders";
- public final static String TEXTUAL_LINE_COUNT_PROPERTY = PROPERTY_PREFIX
+ "messageTextualLineCount";
- public final static String SUBTYPE_PROPERTY = PROPERTY_PREFIX +
"messageSubType";
+ public final static String PROPERTIES_NODE_TYPE =
"imap:messageProperties";
+ public final static String PROPERTIES_NODE = "messageProperties";
+
+ public final static String TEXTUAL_LINE_COUNT_PROPERTY =
"imap:messageTextualLineCount";
+ public final static String SUBTYPE_PROPERTY = "imap:messageSubType";
public JCRMessage(Node node, Log logger) {
this.logger= logger;
@@ -326,15 +329,14 @@ public class JCRMessage extends Abstract
iterator.nextNode().remove();
}
} else {
- headersNode = node.addNode(HEADERS_NODE);
- headersNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
+ headersNode = node.addNode(HEADERS_NODE, HEADERS_NODE_TYPE);
}
// add headers to the message again
for (int i = 0; i < newHeaders.size(); i++) {
JCRHeader header = (JCRHeader) newHeaders.get(i);
- Node headerNode = headersNode.addNode(header.getFieldName());
+ Node headerNode = headersNode.addNode(header.getFieldName(),
"imap:messageHeader");
header.merge(headerNode);
}
@@ -356,16 +358,14 @@ public class JCRMessage extends Abstract
iterator.nextNode().remove();
}
} else {
- propertiesNode = node.addNode(PROPERTIES_NODE);
- propertiesNode.addMixin(JcrConstants.MIX_REFERENCEABLE);
-
+ propertiesNode = node.addNode(PROPERTIES_NODE,
"imap:messageProperties");
}
// store new properties
for (int i = 0; i < newProperites.size(); i++) {
JCRProperty prop = (JCRProperty)newProperites.get(i);
- Node propNode =
propertiesNode.addNode(JCRUtils.escapePath(String.valueOf(prop.getOrder())));
+ Node propNode =
propertiesNode.addNode(JCRUtils.escapePath(String.valueOf(prop.getOrder())),
"imap:messageProperty");
prop.merge(propNode);
}
Modified:
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
(original)
+++
james/imap/trunk/jcr/src/main/java/org/apache/james/imap/jcr/mail/model/JCRProperty.java
Sun Mar 21 11:33:23 2010
@@ -22,7 +22,6 @@ import javax.jcr.Node;
import javax.jcr.RepositoryException;
import org.apache.commons.logging.Log;
-import org.apache.jackrabbit.JcrConstants;
import org.apache.james.imap.jcr.Persistent;
import org.apache.james.imap.jcr.JCRImapConstants;
@@ -42,10 +41,10 @@ public class JCRProperty extends Abstrac
private String value;
private int order;
- public final static String NAMESPACE_PROPERTY = PROPERTY_PREFIX +
"namespace";
- public final static String LOCALNAME_PROPERTY = PROPERTY_PREFIX +
"localName";
- public final static String VALUE_PROPERTY = PROPERTY_PREFIX + "value";
- public final static String ORDER_PROPERTY = PROPERTY_PREFIX + "order";
+ public final static String NAMESPACE_PROPERTY = "imap:propertyNamespace";
+ public final static String LOCALNAME_PROPERTY = "imap:propertyLocalName";
+ public final static String VALUE_PROPERTY = "imap:propertyValue";
+ public final static String ORDER_PROPERTY = "imap:propertyOrder";
public JCRProperty(final Node node, final Log logger) {
this.node = node;
@@ -170,25 +169,15 @@ public class JCRProperty extends Abstrac
value = null;
*/
}
-
-
- public String getUUID() {
- if (isPersistent()) {
- try {
- return node.getUUID();
- } catch (RepositoryException e) {
- logger.error("Unable to access property " +
JcrConstants.JCR_UUID, e);
- }
- }
- return null;
- }
-
@Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
- result = PRIME * result + getUUID().hashCode();
+ result = PRIME * result + getLocalName().hashCode();
+ result = PRIME * result + getNamespace().hashCode();
+ result = PRIME * result + getValue().hashCode();
+
return result;
}
@@ -201,7 +190,7 @@ public class JCRProperty extends Abstrac
if (getClass() != obj.getClass())
return false;
final JCRProperty other = (JCRProperty) obj;
- if (getUUID() != other.getUUID())
+ if (getLocalName() != other.getLocalName() || getNamespace() !=
other.getNamespace() || getValue() !=other.getValue())
return false;
return true;
}
@@ -215,7 +204,6 @@ public class JCRProperty extends Abstrac
*/
public String toString() {
final String result = "Property ( "
- + "uuid = " + this.getUUID() + " "
+ "localName = " + this.getLocalName() + " "
+ "namespace = " + this.getNamespace() + " "
+ "value = " + this.getValue()
Modified:
james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd
URL:
http://svn.apache.org/viewvc/james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
--- james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd
(original)
+++ james/imap/trunk/jcr/src/main/resources/org/apache/james/imap/jcr/imap.cnd
Sun Mar 21 11:33:23 2010
@@ -21,12 +21,12 @@
- imap:subscriptionUsername (STRING) mandatory
- imap:subscriptionMailbox (STRING) mandatory
-[imap:header] > nt:base
- - imap:headerName (STRING) mandatory
+[imap:messageHeader] > nt:base
+ - imap:headerFieldName (STRING) mandatory
- imap:headerValue(STRING) mandatory
- imap:headerLineNumber (LONG) mandatory
-[imap:property] > nt:base
+[imap:messageProperty] > nt:base
- imap:propertyNamespace (STRING) mandatory
- imap:propertyLocalName (STRING) mandatory
- imap:propertyValue(STRING) mandatory
@@ -35,21 +35,23 @@
[imap:message] > mix:referenceable, nt:base
- imap:messageBodyStartOctet (LONG) mandatory
- imap:messageFullContentOctets (LONG) mandatory
- - imap:messageTextualLineCount (LONG) mandatory
- + imap:headers
- + imap:properties
- + jcr:content mandatory
+ - imap:messageTextualLineCount (LONG)
+ - imap:messageSubType (String) mandatory
+ + messageHeaders (imap:messageHeaders)
+ + messageProperties (imap:messageProperties)
+ + jcr:content (nt:resource) mandatory
-[imap:headers] > nt:unstructured
- + imap:header multiple
+[imap:messageHeaders] > nt:unstructured
+ + imap:messageHeader multiple
- [imap:properties] > nt:unstructured
- + imap:property multiple
+ [imap:messageProperties] > nt:unstructured
+ + imap:messageProperty multiple
[imap:mailbox] > mix:referenceable, nt:base
- imap:mailboxUidValidity (LONG) mandatory
- imap:mailboxName (STRING) mandatory
- imap:mailboxLastUid (LONG) mandatory
+ + * (imap:mailboxMembership) multiple
[imap:mailboxMembership] > mix:referenceable, nt:base
- imap:mailboxUUID (REFERENCE) mandatory < 'imap:mailbox'
@@ -62,7 +64,7 @@
- imap:recent (BOOLEAN) mandatory
- imap:seen (BOOLEAN) mandatory
- imap:internalDate (DATE) mandatory
- + imap:message
+ + message (imap:message) mandatory
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java?rev=925754&r1=925753&r2=925754&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
Sun Mar 21 11:33:23 2010
@@ -47,6 +47,7 @@ import org.apache.james.imap.mailbox.Sub
import org.apache.james.imap.mailbox.MailboxMetaData.Selectability;
import org.apache.james.imap.mailbox.util.SimpleMailboxMetaData;
import org.apache.james.imap.store.mail.MailboxMapper;
+import org.apache.james.imap.store.mail.MessageMapper;
import org.apache.james.imap.store.mail.model.Mailbox;
import org.apache.james.imap.store.transaction.TransactionalMapper;
@@ -194,7 +195,9 @@ public abstract class StoreMailboxManage
session.getLog().info("deleteMailbox " + mailboxName);
synchronized (mailboxes) {
// TODO put this into a serilizable transaction
+
final MailboxMapper mapper = createMailboxMapper(session);
+
mapper.execute(new TransactionalMapper.Transaction() {
public void run() throws MailboxException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]