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 bt...@apache.org on 2015/06/29 10:21:14 UTC
svn commit: r1688109 [3/6] - in /james/mailbox/trunk:
caching/src/main/java/org/apache/james/mailbox/caching/
caching/src/main/java/org/apache/james/mailbox/caching/guava/
cassandra/src/main/java/org/apache/james/mailbox/cassandra/
cassandra/src/main/j...
Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java Mon Jun 29 08:21:12 2015
@@ -15,13 +15,31 @@
*/
package org.apache.james.mailbox.hbase.mail;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_META_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_BODY_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_HEADERS_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
+import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxFromResult;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.UUID;
+
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
@@ -30,15 +48,12 @@ import org.apache.hadoop.hbase.util.Byte
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
-import static org.apache.james.mailbox.hbase.HBaseNames.*;
-import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxFromResult;
-import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxRowKey;
+import org.apache.james.mailbox.hbase.HBaseId;
import org.apache.james.mailbox.hbase.io.ChunkInputStream;
import org.apache.james.mailbox.hbase.io.ChunkOutputStream;
import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
@@ -125,7 +140,7 @@ public class HBaseMailboxMapperTest {
LOG.info("findMailboxWithPathLike");
MailboxPath path = pathsList.get(pathsList.size() / 2);
- List<Mailbox<UUID>> result = mapper.findMailboxWithPathLike(path);
+ List<Mailbox<HBaseId>> result = mapper.findMailboxWithPathLike(path);
assertEquals(1, result.size());
int start = 3;
@@ -150,7 +165,7 @@ public class HBaseMailboxMapperTest {
*/
private void testList() throws Exception {
LOG.info("list");
- List<Mailbox<UUID>> result = mapper.list();
+ List<Mailbox<HBaseId>> result = mapper.list();
assertEquals(mailboxList.size(), result.size());
}
@@ -164,7 +179,7 @@ public class HBaseMailboxMapperTest {
final HBaseMailbox mlbx = mailboxList.get(mailboxList.size() / 2);
- final Get get = new Get(mailboxRowKey(mlbx.getMailboxId()));
+ final Get get = new Get(mlbx.getMailboxId().toBytes());
// get all columns for the DATA column family
get.addFamily(MAILBOX_CF);
@@ -178,7 +193,7 @@ public class HBaseMailboxMapperTest {
assertEquals(mlbx.getLastUid(), newValue.getLastUid());
assertEquals(mlbx.getUidValidity(), newValue.getUidValidity());
assertEquals(mlbx.getHighestModSeq(), newValue.getHighestModSeq());
- assertArrayEquals(mailboxRowKey(mlbx.getMailboxId()), mailboxRowKey(newValue.getMailboxId()));
+ assertArrayEquals(mlbx.getMailboxId().toBytes(), newValue.getMailboxId().toBytes());
}
/**
Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java Mon Jun 29 08:21:12 2015
@@ -18,16 +18,34 @@
****************************************************************/
package org.apache.james.mailbox.hbase.mail;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_META_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_BODY_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_HEADERS_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
import javax.mail.Flags;
import javax.mail.internet.SharedInputStream;
import javax.mail.util.SharedByteArrayInputStream;
+
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
-import static org.apache.james.mailbox.hbase.HBaseNames.*;
+import org.apache.james.mailbox.hbase.HBaseId;
import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
@@ -35,7 +53,6 @@ import org.apache.james.mailbox.store.ma
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
-import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
@@ -53,8 +70,8 @@ public class HBaseMessageMapperTest {
private static HBaseModSeqProvider modSeqProvider;
private static HBaseMessageMapper messageMapper;
private static final List<MailboxPath> MBOX_PATHS = new ArrayList<MailboxPath>();
- private static final List<Mailbox<UUID>> MBOXES = new ArrayList<Mailbox<UUID>>();
- private static final List<Message<UUID>> MESSAGE_NO = new ArrayList<Message<UUID>>();
+ private static final List<Mailbox<HBaseId>> MBOXES = new ArrayList<Mailbox<HBaseId>>();
+ private static final List<Message<HBaseId>> MESSAGE_NO = new ArrayList<Message<HBaseId>>();
private static final int COUNT = 5;
private static Configuration conf;
/*
@@ -120,12 +137,12 @@ public class HBaseMessageMapperTest {
propBuilder.setSubType("html");
propBuilder.setTextualLineCount(2L);
- SimpleMessage<UUID> myMsg;
+ SimpleMessage<HBaseId> myMsg;
final Flags flags = new Flags(Flags.Flag.RECENT);
final Date today = new Date();
for (int i = 0; i < COUNT * 2; i++) {
- myMsg = new SimpleMessage<UUID>(today, messageTemplate.length,
+ myMsg = new SimpleMessage<HBaseId>(today, messageTemplate.length,
messageTemplate.length - 20, content, flags, propBuilder,
MBOXES.get(1).getMailboxId());
if (i == COUNT * 2 - 1) {
Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java Mon Jun 29 08:21:12 2015
@@ -18,9 +18,12 @@
****************************************************************/
package org.apache.james.mailbox.hbase.mail.model;
+import static org.junit.Assert.assertEquals;
+
import java.util.UUID;
+
+import org.apache.james.mailbox.hbase.HBaseId;
import org.apache.james.mailbox.model.MailboxPath;
-import static org.junit.Assert.assertEquals;
import org.junit.Test;
/**
@@ -37,7 +40,7 @@ public class HBaseMailboxTest {
final MailboxPath mailboxPath = new MailboxPath("gsoc", "ieugen", "INBOX");
final HBaseMailbox instance = new HBaseMailbox(mailboxPath, 10);
- UUID expResult = UUID.randomUUID();
+ HBaseId expResult = HBaseId.of(UUID.randomUUID());
instance.setMailboxId(expResult);
assertEquals(expResult, instance.getMailboxId());
@@ -114,8 +117,8 @@ public class HBaseMailboxTest {
// from the hashCode()
final int PRIME = 31;
int result = 1;
- UUID mailboxId = instance.getMailboxId();
- int expResult = PRIME * result + (int) (mailboxId.getMostSignificantBits() ^ (mailboxId.getMostSignificantBits() >>> 32));
+ HBaseId mailboxId = instance.getMailboxId();
+ int expResult = PRIME * result + (int) (mailboxId.getRawId().getMostSignificantBits() ^ (mailboxId.getRawId().getMostSignificantBits() >>> 32));
assertEquals(expResult, instance.hashCode());
}
Added: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java?rev=1688109&view=auto
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java (added)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRId.java Mon Jun 29 08:21:12 2015
@@ -0,0 +1,70 @@
+/****************************************************************
+ * 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.mailbox.jcr;
+
+import org.apache.james.mailbox.store.mail.model.MailboxId;
+
+public class JCRId implements MailboxId {
+
+ public static JCRId of(String value) {
+ return new JCRId(value);
+ }
+
+ private final String value;
+
+ private JCRId(String value) {
+ this.value = value;
+ }
+
+ @Override
+ public String serialize() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ JCRId other = (JCRId) obj;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+
+}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java Mon Jun 29 08:21:12 2015
@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
* JCR implementation of a MailboxManager
*
*/
-public class JCRMailboxManager extends StoreMailboxManager<String> implements JCRImapConstants {
+public class JCRMailboxManager extends StoreMailboxManager<JCRId> implements JCRImapConstants {
private final Logger logger = LoggerFactory.getLogger(JCRMailboxManager.class);
@@ -51,12 +51,12 @@ public class JCRMailboxManager extends S
@Override
- protected StoreMessageManager<String> createMessageManager(Mailbox<String> mailboxEntity, MailboxSession session) throws MailboxException{
+ protected StoreMessageManager<JCRId> createMessageManager(Mailbox<JCRId> mailboxEntity, MailboxSession session) throws MailboxException{
return new JCRMessageManager(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(), getLocker(), (JCRMailbox) mailboxEntity, getAclResolver(), getGroupMembershipResolver(), logger, getDelimiter());
}
@Override
- protected Mailbox<String> doCreateMailbox(MailboxPath path, MailboxSession session) throws MailboxException {
+ protected Mailbox<JCRId> doCreateMailbox(MailboxPath path, MailboxSession session) throws MailboxException {
return new org.apache.james.mailbox.jcr.mail.model.JCRMailbox(path, randomUidValidity(), logger);
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java Mon Jun 29 08:21:12 2015
@@ -36,20 +36,20 @@ import org.apache.james.mailbox.store.us
*
*
*/
-public class JCRMailboxSessionMapperFactory extends MailboxSessionMapperFactory<String> {
+public class JCRMailboxSessionMapperFactory extends MailboxSessionMapperFactory<JCRId> {
private final MailboxSessionJCRRepository repository;
private final static int DEFAULT_SCALING = 2;
private final int scaling;
private int messageScaling;
- private UidProvider<String> uidProvider;
- private ModSeqProvider<String> modSeqProvider;
+ private UidProvider<JCRId> uidProvider;
+ private ModSeqProvider<JCRId> modSeqProvider;
- public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<String> uidProvider, final ModSeqProvider<String> modSeqProvider) {
+ public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<JCRId> uidProvider, final ModSeqProvider<JCRId> modSeqProvider) {
this(repository, uidProvider, modSeqProvider, DEFAULT_SCALING, JCRMessageMapper.MESSAGE_SCALE_DAY);
}
- public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<String> uidProvider, final ModSeqProvider<String> modSeqProvider, final int scaling, final int messageScaling) {
+ public JCRMailboxSessionMapperFactory(final MailboxSessionJCRRepository repository, final UidProvider<JCRId> uidProvider, final ModSeqProvider<JCRId> modSeqProvider, final int scaling, final int messageScaling) {
this.repository = repository;
this.scaling = scaling;
this.messageScaling = messageScaling;
@@ -58,13 +58,13 @@ public class JCRMailboxSessionMapperFact
}
@Override
- public MailboxMapper<String> createMailboxMapper(MailboxSession session) throws MailboxException {
+ public MailboxMapper<JCRId> createMailboxMapper(MailboxSession session) throws MailboxException {
JCRMailboxMapper mapper = new JCRMailboxMapper(repository, session, scaling);
return mapper;
}
@Override
- public MessageMapper<String> createMessageMapper(MailboxSession session) throws MailboxException {
+ public MessageMapper<JCRId> createMessageMapper(MailboxSession session) throws MailboxException {
JCRMessageMapper messageMapper = new JCRMessageMapper(repository, session, uidProvider, modSeqProvider, messageScaling);
return messageMapper;
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java Mon Jun 29 08:21:12 2015
@@ -42,20 +42,20 @@ import org.slf4j.Logger;
* JCR implementation of a {@link org.apache.james.mailbox.MessageManager}
*
*/
-public class JCRMessageManager extends StoreMessageManager<String> {
+public class JCRMessageManager extends StoreMessageManager<JCRId> {
private final Logger log;
- public JCRMessageManager(MailboxSessionMapperFactory<String> mapperFactory, MessageSearchIndex<String> index,
- final MailboxEventDispatcher<String> dispatcher, final MailboxPathLocker locker, final JCRMailbox mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, final Logger log, final char delimiter) throws MailboxException {
+ public JCRMessageManager(MailboxSessionMapperFactory<JCRId> mapperFactory, MessageSearchIndex<JCRId> index,
+ final MailboxEventDispatcher<JCRId> dispatcher, final MailboxPathLocker locker, final JCRMailbox mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, final Logger log, final char delimiter) throws MailboxException {
super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver);
this.log = log;
}
@Override
- protected Message<String> createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder) throws MailboxException{
- final Message<String> message = new JCRMessage(getMailboxEntity().getMailboxId(), internalDate,
+ protected Message<JCRId> createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder) throws MailboxException{
+ final Message<JCRId> message = new JCRMessage(getMailboxEntity().getMailboxId(), internalDate,
size, flags, content, bodyStartOctet, propertyBuilder, log);
return message;
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMailboxMapper.java Mon Jun 29 08:21:12 2015
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.MailboxS
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.jcr.AbstractJCRScalingMapper;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
import org.apache.james.mailbox.model.MailboxACL;
@@ -49,7 +50,7 @@ import org.apache.james.mailbox.store.ma
*
*
*/
-public class JCRMailboxMapper extends AbstractJCRScalingMapper implements MailboxMapper<String> {
+public class JCRMailboxMapper extends AbstractJCRScalingMapper implements MailboxMapper<JCRId> {
public JCRMailboxMapper(final MailboxSessionJCRRepository repos, MailboxSession session, final int scaling) {
@@ -63,9 +64,9 @@ public class JCRMailboxMapper extends Ab
* org.apache.james.mailbox.store.mail.MailboxMapper#delete(org.apache.james
* .imap.store.mail.model.Mailbox)
*/
- public void delete(Mailbox<String> mailbox) throws MailboxException {
+ public void delete(Mailbox<JCRId> mailbox) throws MailboxException {
try {
- Node node = getSession().getNodeByIdentifier(((JCRMailbox) mailbox).getMailboxId());
+ Node node = getSession().getNodeByIdentifier(((JCRMailbox) mailbox).getMailboxId().serialize());
node.remove();
@@ -80,7 +81,7 @@ public class JCRMailboxMapper extends Ab
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxByPath(org.apache.james.imap.api.MailboxPath)
*/
- public Mailbox<String> findMailboxByPath(MailboxPath path) throws MailboxException, MailboxNotFoundException {
+ public Mailbox<JCRId> findMailboxByPath(MailboxPath path) throws MailboxException, MailboxNotFoundException {
try {
String name = Text.escapeIllegalXpathSearchChars(path.getName());
String user = path.getUser();
@@ -111,8 +112,8 @@ public class JCRMailboxMapper extends Ab
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(org.apache.james.imap.api.MailboxPath)
*/
- public List<Mailbox<String>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
- List<Mailbox<String>> mailboxList = new ArrayList<Mailbox<String>>();
+ public List<Mailbox<JCRId>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
+ List<Mailbox<JCRId>> mailboxList = new ArrayList<Mailbox<JCRId>>();
try {
String name = Text.escapeIllegalXpathSearchChars(path.getName());
String user = path.getUser();
@@ -144,14 +145,14 @@ public class JCRMailboxMapper extends Ab
* org.apache.james.mailbox.store.mail.MailboxMapper#save(org.apache.james.
* imap.store.mail.model.Mailbox)
*/
- public void save(Mailbox<String> mailbox) throws MailboxException {
+ public void save(Mailbox<JCRId> mailbox) throws MailboxException {
try {
final JCRMailbox jcrMailbox = (JCRMailbox)mailbox;
Node node = null;
if (jcrMailbox.isPersistent()) {
- node = getSession().getNodeByIdentifier(jcrMailbox.getMailboxId());
+ node = getSession().getNodeByIdentifier(jcrMailbox.getMailboxId().serialize());
}
if (node == null) {
Node rootNode = getSession().getRootNode();
@@ -188,7 +189,7 @@ public class JCRMailboxMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MailboxMapper#hasChildren(org.apache.james.
* imap.store.mail.model.Mailbox)
*/
- public boolean hasChildren(Mailbox<String> mailbox, char delimiter)
+ public boolean hasChildren(Mailbox<JCRId> mailbox, char delimiter)
throws MailboxException, MailboxNotFoundException {
try {
String name = Text.escapeIllegalXpathSearchChars(mailbox.getName());
@@ -217,9 +218,9 @@ public class JCRMailboxMapper extends Ab
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.MailboxMapper#list()
*/
- public List<Mailbox<String>> list() throws MailboxException {
+ public List<Mailbox<JCRId>> list() throws MailboxException {
try {
- List<Mailbox<String>> mList = new ArrayList<Mailbox<String>>();
+ List<Mailbox<JCRId>> mList = new ArrayList<Mailbox<JCRId>>();
QueryManager manager = getSession().getWorkspace().getQueryManager();
String queryString = "/jcr:root/" + MAILBOXES_PATH + "//element(*,jamesMailbox:mailbox)";
@@ -235,7 +236,7 @@ public class JCRMailboxMapper extends Ab
}
@Override
- public void updateACL(Mailbox<String> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
+ public void updateACL(Mailbox<JCRId> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
mailbox.setACL(mailbox.getACL().apply(mailboxACLCommand));
}
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java Mon Jun 29 08:21:12 2015
@@ -40,6 +40,7 @@ import org.apache.jackrabbit.commons.Jcr
import org.apache.jackrabbit.util.ISO9075;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.JCRImapConstants;
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMessage;
@@ -59,7 +60,7 @@ import org.apache.james.mailbox.store.ma
* message as a seperate child node under the mailbox
*
*/
-public class JCRMessageMapper extends AbstractMessageMapper<String> implements JCRImapConstants {
+public class JCRMessageMapper extends AbstractMessageMapper<JCRId> implements JCRImapConstants {
/**
* Store the messages directly in the mailbox: .../mailbox/
@@ -118,7 +119,7 @@ public class JCRMessageMapper extends Ab
* {@link #MESSAGE_SCALE_YEAR}
*/
public JCRMessageMapper(final MailboxSessionJCRRepository repository, MailboxSession mSession,
- UidProvider<String> uidProvider, ModSeqProvider<String> modSeqProvider, int scaleType) {
+ UidProvider<JCRId> uidProvider, ModSeqProvider<JCRId> modSeqProvider, int scaleType) {
super(mSession, uidProvider, modSeqProvider);
this.repository = repository;
this.scaleType = scaleType;
@@ -138,7 +139,7 @@ public class JCRMessageMapper extends Ab
* {@link ModSeqProvider} to use
*/
public JCRMessageMapper(final MailboxSessionJCRRepository repos, MailboxSession session,
- UidProvider<String> uidProvider, ModSeqProvider<String> modSeqProvider) {
+ UidProvider<JCRId> uidProvider, ModSeqProvider<JCRId> modSeqProvider) {
this(repos, session, uidProvider, modSeqProvider, MESSAGE_SCALE_DAY);
}
@@ -205,7 +206,7 @@ public class JCRMessageMapper extends Ab
* org.apache.james.mailbox.store.mail.MessageMapper#countMessagesInMailbox
* ()
*/
- public long countMessagesInMailbox(Mailbox<String> mailbox) throws MailboxException {
+ public long countMessagesInMailbox(Mailbox<JCRId> mailbox) throws MailboxException {
try {
// we use order by because without it count will always be 0 in
// jackrabbit
@@ -235,7 +236,7 @@ public class JCRMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MessageMapper#
* countUnseenMessagesInMailbox ()
*/
- public long countUnseenMessagesInMailbox(Mailbox<String> mailbox) throws MailboxException {
+ public long countUnseenMessagesInMailbox(Mailbox<JCRId> mailbox) throws MailboxException {
try {
// we use order by because without it count will always be 0 in
@@ -269,7 +270,7 @@ public class JCRMessageMapper extends Ab
* .mailbox.store.mail.model.Mailbox,
* org.apache.james.mailbox.store.mail.model.Message)
*/
- public void delete(Mailbox<String> mailbox, Message<String> message) throws MailboxException {
+ public void delete(Mailbox<JCRId> mailbox, Message<JCRId> message) throws MailboxException {
JCRMessage membership = (JCRMessage) message;
if (membership.isPersistent()) {
try {
@@ -290,10 +291,10 @@ public class JCRMessageMapper extends Ab
* org.apache.james.mailbox.MessageRange,
* org.apache.james.mailbox.store.mail.MessageMapper.FetchType, int)
*/
- public Iterator<Message<String>> findInMailbox(Mailbox<String> mailbox, MessageRange set, FetchType fType, int max)
+ public Iterator<Message<JCRId>> findInMailbox(Mailbox<JCRId> mailbox, MessageRange set, FetchType fType, int max)
throws MailboxException {
try {
- List<Message<String>> results;
+ List<Message<JCRId>> results;
long from = set.getUidFrom();
final long to = set.getUidTo();
final Type type = set.getType();
@@ -329,7 +330,7 @@ public class JCRMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MessageMapper#
* findRecentMessageUidsInMailbox ()
*/
- public List<Long> findRecentMessageUidsInMailbox(Mailbox<String> mailbox) throws MailboxException {
+ public List<Long> findRecentMessageUidsInMailbox(Mailbox<JCRId> mailbox) throws MailboxException {
try {
@@ -359,7 +360,7 @@ public class JCRMessageMapper extends Ab
* org.apache.james.mailbox.store.mail.MessageMapper#findFirstUnseenMessageUid
* (org.apache.james.mailbox.store.mail.model.Mailbox)
*/
- public Long findFirstUnseenMessageUid(Mailbox<String> mailbox) throws MailboxException {
+ public Long findFirstUnseenMessageUid(Mailbox<JCRId> mailbox) throws MailboxException {
try {
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.SEEN_PROPERTY + "='false'] order by @" + JCRMessage.UID_PROPERTY;
@@ -382,10 +383,10 @@ public class JCRMessageMapper extends Ab
}
@Override
- public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<String> mailbox, MessageRange set)
+ public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<JCRId> mailbox, MessageRange set)
throws MailboxException {
try {
- final List<Message<String>> results;
+ final List<Message<JCRId>> results;
final long from = set.getUidFrom();
final long to = set.getUidTo();
final Type type = set.getType();
@@ -406,7 +407,7 @@ public class JCRMessageMapper extends Ab
}
Map<Long, MessageMetaData> uids = new HashMap<Long, MessageMetaData>();
for (int i = 0; i < results.size(); i++) {
- Message<String> m = results.get(i);
+ Message<JCRId> m = results.get(i);
long uid = m.getUid();
uids.put(uid, new SimpleMessageMetaData(m));
delete(mailbox, m);
@@ -424,22 +425,22 @@ public class JCRMessageMapper extends Ab
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- public MessageMetaData move(Mailbox<String> mailbox, Message<String> original) throws MailboxException {
+ public MessageMetaData move(Mailbox<JCRId> mailbox, Message<JCRId> original) throws MailboxException {
throw new UnsupportedOperationException("Not implemented - see https://issues.apache.org/jira/browse/IMAP-370");
}
@Override
- protected MessageMetaData copy(Mailbox<String> mailbox, long uid, long modSeq, Message<String> original)
+ protected MessageMetaData copy(Mailbox<JCRId> mailbox, long uid, long modSeq, Message<JCRId> original)
throws MailboxException {
try {
- String newMessagePath = getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath() + NODE_DELIMITER
+ String newMessagePath = getSession().getNodeByIdentifier(mailbox.getMailboxId().serialize()).getPath() + NODE_DELIMITER
+ String.valueOf(uid);
getSession().getWorkspace().copy(
((JCRMessage) original).getNode().getPath(),
- getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath() + NODE_DELIMITER
+ getSession().getNodeByIdentifier(mailbox.getMailboxId().serialize()).getPath() + NODE_DELIMITER
+ String.valueOf(uid));
Node node = getSession().getNode(newMessagePath);
- node.setProperty(JCRMessage.MAILBOX_UUID_PROPERTY, mailbox.getMailboxId());
+ node.setProperty(JCRMessage.MAILBOX_UUID_PROPERTY, mailbox.getMailboxId().serialize());
node.setProperty(JCRMessage.UID_PROPERTY, uid);
node.setProperty(JCRMessage.MODSEQ_PROPERTY, modSeq);
// A copy of a message is recent
@@ -452,7 +453,7 @@ public class JCRMessageMapper extends Ab
}
@Override
- protected MessageMetaData save(Mailbox<String> mailbox, Message<String> message) throws MailboxException {
+ protected MessageMetaData save(Mailbox<JCRId> mailbox, Message<JCRId> message) throws MailboxException {
final JCRMessage membership = (JCRMessage) message;
try {
@@ -479,7 +480,7 @@ public class JCRMessageMapper extends Ab
final String hour = convertIntToString(cal.get(Calendar.HOUR_OF_DAY));
final String min = convertIntToString(cal.get(Calendar.MINUTE));
- Node mailboxNode = getSession().getNodeByIdentifier(mailbox.getMailboxId());
+ Node mailboxNode = getSession().getNodeByIdentifier(mailbox.getMailboxId().serialize());
Node node = mailboxNode;
if (scaleType > MESSAGE_SCALE_NONE) {
@@ -539,13 +540,13 @@ public class JCRMessageMapper extends Ab
* @throws ItemNotFoundException
* @throws RepositoryException
*/
- private String getMailboxPath(Mailbox<String> mailbox) throws ItemNotFoundException, RepositoryException {
- return ISO9075.encodePath(getSession().getNodeByIdentifier(mailbox.getMailboxId()).getPath());
+ private String getMailboxPath(Mailbox<JCRId> mailbox) throws ItemNotFoundException, RepositoryException {
+ return ISO9075.encodePath(getSession().getNodeByIdentifier(mailbox.getMailboxId().serialize()).getPath());
}
- private List<Message<String>> findMessagesInMailboxAfterUID(Mailbox<String> mailbox, long uid, int batchSize)
+ private List<Message<JCRId>> findMessagesInMailboxAfterUID(Mailbox<JCRId> mailbox, long uid, int batchSize)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + ">=" + uid + "] order by @" + JCRMessage.UID_PROPERTY;
@@ -562,9 +563,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findMessageInMailboxWithUID(Mailbox<String> mailbox, long uid)
+ private List<Message<JCRId>> findMessageInMailboxWithUID(Mailbox<JCRId> mailbox, long uid)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + "=" + uid + "]";
@@ -579,9 +580,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findMessagesInMailboxBetweenUIDs(Mailbox<String> mailbox, long from, long to,
+ private List<Message<JCRId>> findMessagesInMailboxBetweenUIDs(Mailbox<JCRId> mailbox, long from, long to,
int batchSize) throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + ">=" + from + " and @" + JCRMessage.UID_PROPERTY + "<=" + to
+ "] order by @" + JCRMessage.UID_PROPERTY;
@@ -599,9 +600,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findMessagesInMailbox(Mailbox<String> mailbox, int batchSize)
+ private List<Message<JCRId>> findMessagesInMailbox(Mailbox<JCRId> mailbox, int batchSize)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message) order by @"
+ JCRMessage.UID_PROPERTY;
@@ -618,9 +619,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findDeletedMessagesInMailboxAfterUID(Mailbox<String> mailbox, long uid)
+ private List<Message<JCRId>> findDeletedMessagesInMailboxAfterUID(Mailbox<JCRId> mailbox, long uid)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + ">=" + uid + " and @" + JCRMessage.DELETED_PROPERTY + "='true'] order by @"
+ JCRMessage.UID_PROPERTY;
@@ -635,9 +636,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findDeletedMessageInMailboxWithUID(Mailbox<String> mailbox, long uid)
+ private List<Message<JCRId>> findDeletedMessageInMailboxWithUID(Mailbox<JCRId> mailbox, long uid)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + "=" + uid + " and @" + JCRMessage.DELETED_PROPERTY + "='true']";
QueryManager manager = getSession().getWorkspace().getQueryManager();
@@ -653,9 +654,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findDeletedMessagesInMailboxBetweenUIDs(Mailbox<String> mailbox, long from, long to)
+ private List<Message<JCRId>> findDeletedMessagesInMailboxBetweenUIDs(Mailbox<JCRId> mailbox, long from, long to)
throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.UID_PROPERTY + ">=" + from + " and @" + JCRMessage.UID_PROPERTY + "<=" + to + " and @"
+ JCRMessage.DELETED_PROPERTY + "='true'] order by @" + JCRMessage.UID_PROPERTY;
@@ -670,9 +671,9 @@ public class JCRMessageMapper extends Ab
return list;
}
- private List<Message<String>> findDeletedMessagesInMailbox(Mailbox<String> mailbox) throws RepositoryException {
+ private List<Message<JCRId>> findDeletedMessagesInMailbox(Mailbox<JCRId> mailbox) throws RepositoryException {
- List<Message<String>> list = new ArrayList<Message<String>>();
+ List<Message<JCRId>> list = new ArrayList<Message<JCRId>>();
String queryString = "/jcr:root" + getMailboxPath(mailbox) + "//element(*,jamesMailbox:message)[@"
+ JCRMessage.DELETED_PROPERTY + "='true'] order by @" + JCRMessage.UID_PROPERTY;
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRModSeqProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRModSeqProvider.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRModSeqProvider.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRModSeqProvider.java Mon Jun 29 08:21:12 2015
@@ -25,12 +25,13 @@ import javax.jcr.Session;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
import org.apache.james.mailbox.store.mail.AbstractLockingModSeqProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-public class JCRModSeqProvider extends AbstractLockingModSeqProvider<String>{
+public class JCRModSeqProvider extends AbstractLockingModSeqProvider<JCRId>{
private MailboxSessionJCRRepository repository;
@@ -40,10 +41,10 @@ public class JCRModSeqProvider extends A
}
@Override
- public long highestModSeq(MailboxSession session, Mailbox<String> mailbox) throws MailboxException {
+ public long highestModSeq(MailboxSession session, Mailbox<JCRId> mailbox) throws MailboxException {
try {
Session s = repository.login(session);
- Node node = s.getNodeByIdentifier(mailbox.getMailboxId());
+ Node node = s.getNodeByIdentifier(mailbox.getMailboxId().serialize());
return node.getProperty(JCRMailbox.HIGHESTMODSEQ_PROPERTY).getLong();
} catch (RepositoryException e) {
throw new MailboxException("Unable to get highest mod-sequence for mailbox " + mailbox, e);
@@ -51,10 +52,10 @@ public class JCRModSeqProvider extends A
}
@Override
- protected long lockedNextModSeq(MailboxSession session, Mailbox<String> mailbox) throws MailboxException {
+ protected long lockedNextModSeq(MailboxSession session, Mailbox<JCRId> mailbox) throws MailboxException {
try {
Session s = repository.login(session);
- Node node = s.getNodeByIdentifier(mailbox.getMailboxId());
+ Node node = s.getNodeByIdentifier(mailbox.getMailboxId().serialize());
long modseq = node.getProperty(JCRMailbox.HIGHESTMODSEQ_PROPERTY).getLong();
modseq++;
node.setProperty(JCRMailbox.HIGHESTMODSEQ_PROPERTY, modseq);
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java Mon Jun 29 08:21:12 2015
@@ -25,12 +25,13 @@ import javax.jcr.Session;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.MailboxSessionJCRRepository;
import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
import org.apache.james.mailbox.store.mail.AbstractLockingUidProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-public class JCRUidProvider extends AbstractLockingUidProvider<String>{
+public class JCRUidProvider extends AbstractLockingUidProvider<JCRId> {
private MailboxSessionJCRRepository repository;
@@ -40,10 +41,10 @@ public class JCRUidProvider extends Abst
}
@Override
- public long lastUid(MailboxSession mailboxSession, Mailbox<String> mailbox) throws MailboxException {
+ public long lastUid(MailboxSession mailboxSession, Mailbox<JCRId> mailbox) throws MailboxException {
try {
Session s = repository.login(mailboxSession);
- Node node = s.getNodeByIdentifier(mailbox.getMailboxId());
+ Node node = s.getNodeByIdentifier(mailbox.getMailboxId().serialize());
return node.getProperty(JCRMailbox.LASTUID_PROPERTY).getLong();
} catch (RepositoryException e) {
throw new MailboxException("Unable to get last uid for mailbox " + mailbox, e);
@@ -52,10 +53,10 @@ public class JCRUidProvider extends Abst
}
@Override
- protected long lockedNextUid(MailboxSession session, Mailbox<String> mailbox) throws MailboxException {
+ protected long lockedNextUid(MailboxSession session, Mailbox<JCRId> mailbox) throws MailboxException {
try {
Session s = repository.login(session);
- Node node = s.getNodeByIdentifier(mailbox.getMailboxId());
+ Node node = s.getNodeByIdentifier(mailbox.getMailboxId().serialize());
long uid = node.getProperty(JCRMailbox.LASTUID_PROPERTY).getLong();
uid++;
node.setProperty(JCRMailbox.LASTUID_PROPERTY, uid);
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailbox.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailbox.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailbox.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailbox.java Mon Jun 29 08:21:12 2015
@@ -23,6 +23,7 @@ import javax.jcr.RepositoryException;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.util.Text;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.JCRImapConstants;
import org.apache.james.mailbox.jcr.Persistent;
import org.apache.james.mailbox.model.MailboxACL;
@@ -35,7 +36,7 @@ import org.slf4j.Logger;
/**
* JCR implementation of a {@link Mailbox}
*/
-public class JCRMailbox implements Mailbox<String>, JCRImapConstants, Persistent{
+public class JCRMailbox implements Mailbox<JCRId>, JCRImapConstants, Persistent{
private static final String TAB = " ";
@@ -202,10 +203,10 @@ public class JCRMailbox implements Mailb
* (non-Javadoc)
* @see org.apache.james.mailbox.store.mail.model.Mailbox#getMailboxId()
*/
- public String getMailboxId() {
+ public JCRId getMailboxId() {
if (isPersistent()) {
try {
- return node.getIdentifier();
+ return JCRId.of(node.getIdentifier());
} catch (RepositoryException e) {
logger.error("Unable to access property " + JcrConstants.JCR_UUID, e);
}
Modified: james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java (original)
+++ james/mailbox/trunk/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMessage.java Mon Jun 29 08:21:12 2015
@@ -38,6 +38,7 @@ import org.apache.commons.io.input.Bound
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jcr.JCRId;
import org.apache.james.mailbox.jcr.JCRImapConstants;
import org.apache.james.mailbox.jcr.Persistent;
import org.apache.james.mailbox.store.mail.model.AbstractMessage;
@@ -50,7 +51,7 @@ import org.slf4j.Logger;
* JCR implementation of {@link Message}
*
*/
-public class JCRMessage extends AbstractMessage<String> implements JCRImapConstants, Persistent{
+public class JCRMessage extends AbstractMessage<JCRId> implements JCRImapConstants, Persistent{
private Node node;
private final Logger logger;
@@ -61,7 +62,7 @@ public class JCRMessage extends Abstract
private List<JCRProperty> properties;
private int bodyStartOctet;
- private String mailboxUUID;
+ private JCRId mailboxUUID;
private long uid;
private Date internalDate;
private long size;
@@ -102,7 +103,7 @@ public class JCRMessage extends Abstract
this.node = node;
}
- public JCRMessage(String mailboxUUID, Date internalDate, int size, Flags flags, SharedInputStream content,
+ public JCRMessage(JCRId mailboxUUID, Date internalDate, int size, Flags flags, SharedInputStream content,
int bodyStartOctet, final PropertyBuilder propertyBuilder, Logger logger) {
super();
this.mailboxUUID = mailboxUUID;
@@ -131,7 +132,7 @@ public class JCRMessage extends Abstract
* @param message
* @throws IOException
*/
- public JCRMessage(String mailboxUUID, long uid, long modSeq, JCRMessage message, Logger logger) throws MailboxException {
+ public JCRMessage(JCRId mailboxUUID, long uid, long modSeq, JCRMessage message, Logger logger) throws MailboxException {
this.mailboxUUID = mailboxUUID;
this.internalDate = message.getInternalDate();
this.size = message.getFullContentOctets();
@@ -293,7 +294,7 @@ public class JCRMessage extends Abstract
// This also fix https://issues.apache.org/jira/browse/IMAP-159
if (isPersistent() == false) {
node.setProperty(SIZE_PROPERTY, getFullContentOctets());
- node.setProperty(MAILBOX_UUID_PROPERTY, getMailboxId());
+ node.setProperty(MAILBOX_UUID_PROPERTY, getMailboxId().serialize());
node.setProperty(UID_PROPERTY, getUid());
node.setProperty(MODSEQ_PROPERTY, getModSeq());
@@ -428,10 +429,10 @@ public class JCRMessage extends Abstract
* @see
* org.apache.james.mailbox.store.mail.model.MailboxMembership#getMailboxId()
*/
- public String getMailboxId() {
+ public JCRId getMailboxId() {
if (isPersistent()) {
try {
- return node.getProperty(MAILBOX_UUID_PROPERTY).getString();
+ return JCRId.of(node.getProperty(MAILBOX_UUID_PROPERTY).getString());
} catch (RepositoryException e) {
logger.error("Unable to access property "
+ MAILBOX_UUID_PROPERTY, e);
Added: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java?rev=1688109&view=auto
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java (added)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAId.java Mon Jun 29 08:21:12 2015
@@ -0,0 +1,71 @@
+/****************************************************************
+ * 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.mailbox.jpa;
+
+import org.apache.james.mailbox.store.mail.model.MailboxId;
+
+public class JPAId implements MailboxId {
+
+ public static JPAId of(long value) {
+ return new JPAId(value);
+ }
+
+ private final long value;
+
+ public JPAId(long value) {
+ this.value = value;
+ }
+
+ @Override
+ public String serialize() {
+ return String.valueOf(value);
+ }
+
+ @Override
+ public String toString() {
+ return String.valueOf(value);
+ }
+
+ public long getRawId() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (value ^ (value >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ JPAId other = (JPAId) obj;
+ if (value != other.value)
+ return false;
+ return true;
+ }
+
+}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java Mon Jun 29 08:21:12 2015
@@ -34,7 +34,7 @@ import org.apache.james.mailbox.store.tr
/**
* JPA implementation of {@link StoreMailboxManager}
*/
-public abstract class JPAMailboxManager extends StoreMailboxManager<Long> {
+public abstract class JPAMailboxManager extends StoreMailboxManager<JPAId> {
public JPAMailboxManager(JPAMailboxSessionMapperFactory mailboxSessionMapperFactory,
final Authenticator authenticator, final MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) {
@@ -42,7 +42,7 @@ public abstract class JPAMailboxManager
}
@Override
- protected Mailbox<Long> doCreateMailbox(MailboxPath path, MailboxSession session) throws MailboxException {
+ protected Mailbox<JPAId> doCreateMailbox(MailboxPath path, MailboxSession session) throws MailboxException {
return new JPAMailbox(path, randomUidValidity());
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java Mon Jun 29 08:21:12 2015
@@ -36,13 +36,13 @@ import org.apache.james.mailbox.store.us
* JPA implementation of {@link MailboxSessionMapperFactory}
*
*/
-public class JPAMailboxSessionMapperFactory extends MailboxSessionMapperFactory<Long> {
+public class JPAMailboxSessionMapperFactory extends MailboxSessionMapperFactory<JPAId> {
private final EntityManagerFactory entityManagerFactory;
- private final UidProvider<Long> uidProvider;
- private final ModSeqProvider<Long> modSeqProvider;
+ private final UidProvider<JPAId> uidProvider;
+ private final ModSeqProvider<JPAId> modSeqProvider;
- public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory, UidProvider<Long> uidProvider, ModSeqProvider<Long> modSeqProvider) {
+ public JPAMailboxSessionMapperFactory(EntityManagerFactory entityManagerFactory, UidProvider<JPAId> uidProvider, ModSeqProvider<JPAId> modSeqProvider) {
this.entityManagerFactory = entityManagerFactory;
this.uidProvider = uidProvider;
this.modSeqProvider = modSeqProvider;
@@ -50,12 +50,12 @@ public class JPAMailboxSessionMapperFact
}
@Override
- public MailboxMapper<Long> createMailboxMapper(MailboxSession session) {
+ public MailboxMapper<JPAId> createMailboxMapper(MailboxSession session) {
return new JPAMailboxMapper(entityManagerFactory);
}
@Override
- public MessageMapper<Long> createMessageMapper(MailboxSession session) {
+ public MessageMapper<JPAId> createMessageMapper(MailboxSession session) {
return new JPAMessageMapper(session, uidProvider, modSeqProvider, entityManagerFactory);
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java Mon Jun 29 08:21:12 2015
@@ -41,17 +41,21 @@ import org.apache.james.mailbox.store.se
/**
* Abstract base class which should be used from JPA implementations.
*/
-public class JPAMessageManager extends StoreMessageManager<Long> {
+public class JPAMessageManager extends StoreMessageManager<JPAId> {
- public JPAMessageManager(MailboxSessionMapperFactory<Long> mapperFactory, final MessageSearchIndex<Long> index, final MailboxEventDispatcher<Long> dispatcher, final MailboxPathLocker locker, final Mailbox<Long> mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver) throws MailboxException {
+ public JPAMessageManager(MailboxSessionMapperFactory<JPAId> mapperFactory, final MessageSearchIndex<JPAId> index,
+ final MailboxEventDispatcher<JPAId> dispatcher, final MailboxPathLocker locker,
+ final Mailbox<JPAId> mailbox, MailboxACLResolver aclResolver,
+ GroupMembershipResolver groupMembershipResolver) throws MailboxException {
+
super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver);
}
@Override
- protected Message<Long> createMessage(Date internalDate, final int size, int bodyStartOctet, final SharedInputStream content,
+ protected Message<JPAId> createMessage(Date internalDate, final int size, int bodyStartOctet, final SharedInputStream content,
final Flags flags, PropertyBuilder propertyBuilder) throws MailboxException{
- final Message<Long> message = new JPAMessage((JPAMailbox) getMailboxEntity(), internalDate, size, flags, content, bodyStartOctet, propertyBuilder);
+ final Message<JPAId> message = new JPAMessage((JPAMailbox) getMailboxEntity(), internalDate, size, flags, content, bodyStartOctet, propertyBuilder);
return message;
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java Mon Jun 29 08:21:12 2015
@@ -30,6 +30,7 @@ import javax.persistence.RollbackExcepti
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.JPATransactionalMapper;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.model.MailboxACL;
@@ -40,7 +41,7 @@ import org.apache.james.mailbox.store.ma
/**
* Data access management for mailbox.
*/
-public class JPAMailboxMapper extends JPATransactionalMapper implements MailboxMapper<Long> {
+public class JPAMailboxMapper extends JPATransactionalMapper implements MailboxMapper<JPAId> {
private static final char SQL_WILDCARD_CHAR = '%';
private String lastMailboxName;
@@ -72,7 +73,7 @@ public class JPAMailboxMapper extends JP
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#save(Mailbox)
*/
- public void save(Mailbox<Long> mailbox) throws MailboxException {
+ public void save(Mailbox<JPAId> mailbox) throws MailboxException {
try {
this.lastMailboxName = mailbox.getName();
getEntityManager().persist(mailbox);
@@ -84,7 +85,7 @@ public class JPAMailboxMapper extends JP
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxByPath(MailboxPath)
*/
- public Mailbox<Long> findMailboxByPath(MailboxPath mailboxPath) throws MailboxException, MailboxNotFoundException {
+ public Mailbox<JPAId> findMailboxByPath(MailboxPath mailboxPath) throws MailboxException, MailboxNotFoundException {
try {
if (mailboxPath.getUser() == null) {
return (JPAMailbox) getEntityManager().createNamedQuery("findMailboxByName").setParameter("nameParam", mailboxPath.getName()).setParameter("namespaceParam", mailboxPath.getNamespace()).getSingleResult();
@@ -101,9 +102,9 @@ public class JPAMailboxMapper extends JP
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#delete(Mailbox)
*/
- public void delete(Mailbox<Long> mailbox) throws MailboxException {
+ public void delete(Mailbox<JPAId> mailbox) throws MailboxException {
try {
- getEntityManager().createNamedQuery("deleteMessages").setParameter("idParam", mailbox.getMailboxId()).executeUpdate();
+ getEntityManager().createNamedQuery("deleteMessages").setParameter("idParam", mailbox.getMailboxId().getRawId()).executeUpdate();
getEntityManager().remove(mailbox);
} catch (PersistenceException e) {
throw new MailboxException("Delete of mailbox " + mailbox + " failed", e);
@@ -114,7 +115,7 @@ public class JPAMailboxMapper extends JP
* @see org.apache.james.mailbox.store.mail.MailboxMapper#findMailboxWithPathLike(MailboxPath)
*/
@SuppressWarnings("unchecked")
- public List<Mailbox<Long>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
+ public List<Mailbox<JPAId>> findMailboxWithPathLike(MailboxPath path) throws MailboxException {
try {
if (path.getUser() == null) {
return getEntityManager().createNamedQuery("findMailboxWithNameLike").setParameter("nameParam", SQL_WILDCARD_CHAR + path.getName() + SQL_WILDCARD_CHAR).setParameter("namespaceParam", path.getNamespace()).getResultList();
@@ -145,7 +146,7 @@ public class JPAMailboxMapper extends JP
/**
* @see org.apache.james.mailbox.store.mail.MailboxMapper#hasChildren(Mailbox, char)
*/
- public boolean hasChildren(Mailbox<Long> mailbox, char delimiter) throws MailboxException,
+ public boolean hasChildren(Mailbox<JPAId> mailbox, char delimiter) throws MailboxException,
MailboxNotFoundException {
final String name = mailbox.getName() + delimiter + SQL_WILDCARD_CHAR;
final Long numberOfChildMailboxes;
@@ -161,7 +162,7 @@ public class JPAMailboxMapper extends JP
* @see org.apache.james.mailbox.store.mail.MailboxMapper#list()
*/
@SuppressWarnings("unchecked")
- public List<Mailbox<Long>> list() throws MailboxException{
+ public List<Mailbox<JPAId>> list() throws MailboxException{
try {
return getEntityManager().createNamedQuery("listMailboxes").getResultList();
} catch (PersistenceException e) {
@@ -170,7 +171,7 @@ public class JPAMailboxMapper extends JP
}
@Override
- public void updateACL(Mailbox<Long> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
+ public void updateACL(Mailbox<JPAId> mailbox, MailboxACL.MailboxACLCommand mailboxACLCommand) throws MailboxException {
mailbox.setACL(mailbox.getACL().apply(mailboxACLCommand));
}
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java Mon Jun 29 08:21:12 2015
@@ -31,6 +31,7 @@ import javax.persistence.Query;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.jpa.mail.model.openjpa.AbstractJPAMessage;
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAEncryptedMessage;
@@ -51,12 +52,12 @@ import org.apache.openjpa.persistence.Ar
/**
* JPA implementation of a {@link MessageMapper}. This class is not thread-safe!
*/
-public class JPAMessageMapper extends AbstractMessageMapper<Long> implements MessageMapper<Long> {
+public class JPAMessageMapper extends AbstractMessageMapper<JPAId> implements MessageMapper<JPAId> {
protected EntityManagerFactory entityManagerFactory;
protected EntityManager entityManager;
- public JPAMessageMapper(final MailboxSession session, final UidProvider<Long> uidProvider,
- ModSeqProvider<Long> modSeqProvider, final EntityManagerFactory entityManagerFactory) {
+ public JPAMessageMapper(final MailboxSession session, final UidProvider<JPAId> uidProvider,
+ ModSeqProvider<JPAId> modSeqProvider, final EntityManagerFactory entityManagerFactory) {
super(session, uidProvider, modSeqProvider);
this.entityManagerFactory = entityManagerFactory;
}
@@ -123,10 +124,10 @@ public class JPAMessageMapper extends Ab
* org.apache.james.mailbox.model.MessageRange,
* org.apache.james.mailbox.store.mail.MessageMapper.FetchType, int)
*/
- public Iterator<Message<Long>> findInMailbox(Mailbox<Long> mailbox, MessageRange set, FetchType fType, int max)
+ public Iterator<Message<JPAId>> findInMailbox(Mailbox<JPAId> mailbox, MessageRange set, FetchType fType, int max)
throws MailboxException {
try {
- List<Message<Long>> results;
+ List<Message<JPAId>> results;
long from = set.getUidFrom();
final long to = set.getUidTo();
final Type type = set.getType();
@@ -157,10 +158,10 @@ public class JPAMessageMapper extends Ab
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#countMessagesInMailbox(Mailbox)
*/
- public long countMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public long countMessagesInMailbox(Mailbox<JPAId> mailbox) throws MailboxException {
try {
return (Long) getEntityManager().createNamedQuery("countMessagesInMailbox")
- .setParameter("idParam", mailbox.getMailboxId()).getSingleResult();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).getSingleResult();
} catch (PersistenceException e) {
throw new MailboxException("Count of messages failed in mailbox " + mailbox, e);
}
@@ -169,10 +170,10 @@ public class JPAMessageMapper extends Ab
/**
* @see org.apache.james.mailbox.store.mail.MessageMapper#countUnseenMessagesInMailbox(Mailbox)
*/
- public long countUnseenMessagesInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public long countUnseenMessagesInMailbox(Mailbox<JPAId> mailbox) throws MailboxException {
try {
return (Long) getEntityManager().createNamedQuery("countUnseenMessagesInMailbox")
- .setParameter("idParam", mailbox.getMailboxId()).getSingleResult();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).getSingleResult();
} catch (PersistenceException e) {
throw new MailboxException("Count of useen messages failed in mailbox " + mailbox, e);
}
@@ -182,7 +183,7 @@ public class JPAMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MessageMapper#delete(org.apache.james.mailbox.store.mail.model.Mailbox,
* org.apache.james.mailbox.store.mail.model.Message)
*/
- public void delete(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
+ public void delete(Mailbox<JPAId> mailbox, Message<JPAId> message) throws MailboxException {
try {
getEntityManager().remove(message);
} catch (PersistenceException e) {
@@ -194,12 +195,12 @@ public class JPAMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MessageMapper#findFirstUnseenMessageUid(Mailbox)
*/
@SuppressWarnings("unchecked")
- public Long findFirstUnseenMessageUid(Mailbox<Long> mailbox) throws MailboxException {
+ public Long findFirstUnseenMessageUid(Mailbox<JPAId> mailbox) throws MailboxException {
try {
Query query = getEntityManager().createNamedQuery("findUnseenMessagesInMailboxOrderByUid").setParameter(
- "idParam", mailbox.getMailboxId());
+ "idParam", mailbox.getMailboxId().getRawId());
query.setMaxResults(1);
- List<Message<Long>> result = query.getResultList();
+ List<Message<JPAId>> result = query.getResultList();
if (result.isEmpty()) {
return null;
} else {
@@ -214,10 +215,10 @@ public class JPAMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.MessageMapper#findRecentMessageUidsInMailbox(Mailbox)
*/
@SuppressWarnings("unchecked")
- public List<Long> findRecentMessageUidsInMailbox(Mailbox<Long> mailbox) throws MailboxException {
+ public List<Long> findRecentMessageUidsInMailbox(Mailbox<JPAId> mailbox) throws MailboxException {
try {
Query query = getEntityManager().createNamedQuery("findRecentMessageUidsInMailbox").setParameter("idParam",
- mailbox.getMailboxId());
+ mailbox.getMailboxId().getRawId());
return query.getResultList();
} catch (PersistenceException e) {
throw new MailboxException("Search of recent messages failed in mailbox " + mailbox, e);
@@ -225,11 +226,11 @@ public class JPAMessageMapper extends Ab
}
@Override
- public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<Long> mailbox, MessageRange set)
+ public Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox(Mailbox<JPAId> mailbox, MessageRange set)
throws MailboxException {
try {
final Map<Long, MessageMetaData> data;
- final List<Message<Long>> results;
+ final List<Message<JPAId>> results;
final long from = set.getUidFrom();
final long to = set.getUidTo();
@@ -270,7 +271,7 @@ public class JPAMessageMapper extends Ab
* org.apache.james.mailbox.store.mail.model.Message)
*/
@Override
- public MessageMetaData move(Mailbox<Long> mailbox, Message<Long> original) throws MailboxException {
+ public MessageMetaData move(Mailbox<JPAId> mailbox, Message<JPAId> original) throws MailboxException {
throw new UnsupportedOperationException("Not implemented - see https://issues.apache.org/jira/browse/IMAP-370");
}
@@ -278,9 +279,9 @@ public class JPAMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.AbstractMessageMapper#copy(Mailbox,
* long, long, Message)
*/
- protected MessageMetaData copy(Mailbox<Long> mailbox, long uid, long modSeq, Message<Long> original)
+ protected MessageMetaData copy(Mailbox<JPAId> mailbox, long uid, long modSeq, Message<JPAId> original)
throws MailboxException {
- Message<Long> copy;
+ Message<JPAId> copy;
if (original instanceof JPAStreamingMessage) {
copy = new JPAStreamingMessage((JPAMailbox) mailbox, uid, modSeq, original);
} else if (original instanceof JPAEncryptedMessage) {
@@ -295,7 +296,7 @@ public class JPAMessageMapper extends Ab
* @see org.apache.james.mailbox.store.mail.AbstractMessageMapper#save(Mailbox,
* Message)
*/
- protected MessageMetaData save(Mailbox<Long> mailbox, Message<Long> message) throws MailboxException {
+ protected MessageMetaData save(Mailbox<JPAId> mailbox, Message<JPAId> message) throws MailboxException {
try {
@@ -304,7 +305,7 @@ public class JPAMessageMapper extends Ab
// If we don't this, we will get an
// org.apache.openjpa.persistence.ArgumentException.
((AbstractJPAMessage) message)
- .setMailbox(getEntityManager().find(JPAMailbox.class, mailbox.getMailboxId()));
+ .setMailbox(getEntityManager().find(JPAMailbox.class, mailbox.getMailboxId().getRawId()));
getEntityManager().persist(message);
return new SimpleMessageMetaData(message);
@@ -316,9 +317,9 @@ public class JPAMessageMapper extends Ab
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findMessagesInMailboxAfterUID(Mailbox<Long> mailbox, long uid, int batchSize) {
+ private List<Message<JPAId>> findMessagesInMailboxAfterUID(Mailbox<JPAId> mailbox, long uid, int batchSize) {
Query query = getEntityManager().createNamedQuery("findMessagesInMailboxAfterUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid);
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid);
if (batchSize > 0)
query.setMaxResults(batchSize);
@@ -327,17 +328,17 @@ public class JPAMessageMapper extends Ab
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findMessagesInMailboxWithUID(Mailbox<Long> mailbox, long uid) {
+ private List<Message<JPAId>> findMessagesInMailboxWithUID(Mailbox<JPAId> mailbox, long uid) {
return getEntityManager().createNamedQuery("findMessagesInMailboxWithUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid).setMaxResults(1)
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid).setMaxResults(1)
.getResultList();
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findMessagesInMailboxBetweenUIDs(Mailbox<Long> mailbox, long from, long to,
+ private List<Message<JPAId>> findMessagesInMailboxBetweenUIDs(Mailbox<JPAId> mailbox, long from, long to,
int batchSize) {
Query query = getEntityManager().createNamedQuery("findMessagesInMailboxBetweenUIDs")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("fromParam", from)
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("fromParam", from)
.setParameter("toParam", to);
if (batchSize > 0)
@@ -347,67 +348,67 @@ public class JPAMessageMapper extends Ab
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findMessagesInMailbox(Mailbox<Long> mailbox, int batchSize) {
+ private List<Message<JPAId>> findMessagesInMailbox(Mailbox<JPAId> mailbox, int batchSize) {
Query query = getEntityManager().createNamedQuery("findMessagesInMailbox").setParameter("idParam",
- mailbox.getMailboxId());
+ mailbox.getMailboxId().getRawId());
if (batchSize > 0)
query.setMaxResults(batchSize);
return query.getResultList();
}
- private Map<Long, MessageMetaData> createMetaData(List<Message<Long>> uids) {
+ private Map<Long, MessageMetaData> createMetaData(List<Message<JPAId>> uids) {
final Map<Long, MessageMetaData> data = new HashMap<Long, MessageMetaData>();
for (int i = 0; i < uids.size(); i++) {
- Message<Long> m = uids.get(i);
+ Message<JPAId> m = uids.get(i);
data.put(m.getUid(), new SimpleMessageMetaData(m));
}
return data;
}
- private int deleteDeletedMessagesInMailbox(Mailbox<Long> mailbox) {
+ private int deleteDeletedMessagesInMailbox(Mailbox<JPAId> mailbox) {
return getEntityManager().createNamedQuery("deleteDeletedMessagesInMailbox")
- .setParameter("idParam", mailbox.getMailboxId()).executeUpdate();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).executeUpdate();
}
- private int deleteDeletedMessagesInMailboxAfterUID(Mailbox<Long> mailbox, long uid) {
+ private int deleteDeletedMessagesInMailboxAfterUID(Mailbox<JPAId> mailbox, long uid) {
return getEntityManager().createNamedQuery("deleteDeletedMessagesInMailboxAfterUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid).executeUpdate();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid).executeUpdate();
}
- private int deleteDeletedMessagesInMailboxWithUID(Mailbox<Long> mailbox, long uid) {
+ private int deleteDeletedMessagesInMailboxWithUID(Mailbox<JPAId> mailbox, long uid) {
return getEntityManager().createNamedQuery("deleteDeletedMessagesInMailboxWithUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid).executeUpdate();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid).executeUpdate();
}
- private int deleteDeletedMessagesInMailboxBetweenUIDs(Mailbox<Long> mailbox, long from, long to) {
+ private int deleteDeletedMessagesInMailboxBetweenUIDs(Mailbox<JPAId> mailbox, long from, long to) {
return getEntityManager().createNamedQuery("deleteDeletedMessagesInMailboxBetweenUIDs")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("fromParam", from)
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("fromParam", from)
.setParameter("toParam", to).executeUpdate();
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findDeletedMessagesInMailbox(Mailbox<Long> mailbox) {
+ private List<Message<JPAId>> findDeletedMessagesInMailbox(Mailbox<JPAId> mailbox) {
return getEntityManager().createNamedQuery("findDeletedMessagesInMailbox")
- .setParameter("idParam", mailbox.getMailboxId()).getResultList();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).getResultList();
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findDeletedMessagesInMailboxAfterUID(Mailbox<Long> mailbox, long uid) {
+ private List<Message<JPAId>> findDeletedMessagesInMailboxAfterUID(Mailbox<JPAId> mailbox, long uid) {
return getEntityManager().createNamedQuery("findDeletedMessagesInMailboxAfterUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid).getResultList();
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid).getResultList();
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findDeletedMessagesInMailboxWithUID(Mailbox<Long> mailbox, long uid) {
+ private List<Message<JPAId>> findDeletedMessagesInMailboxWithUID(Mailbox<JPAId> mailbox, long uid) {
return getEntityManager().createNamedQuery("findDeletedMessagesInMailboxWithUID")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("uidParam", uid).setMaxResults(1)
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("uidParam", uid).setMaxResults(1)
.getResultList();
}
@SuppressWarnings("unchecked")
- private List<Message<Long>> findDeletedMessagesInMailboxBetweenUIDs(Mailbox<Long> mailbox, long from, long to) {
+ private List<Message<JPAId>> findDeletedMessagesInMailboxBetweenUIDs(Mailbox<JPAId> mailbox, long from, long to) {
return getEntityManager().createNamedQuery("findDeletedMessagesInMailboxBetweenUIDs")
- .setParameter("idParam", mailbox.getMailboxId()).setParameter("fromParam", from)
+ .setParameter("idParam", mailbox.getMailboxId().getRawId()).setParameter("fromParam", from)
.setParameter("toParam", to).getResultList();
}
}
Modified: james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAModSeqProvider.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAModSeqProvider.java?rev=1688109&r1=1688108&r2=1688109&view=diff
==============================================================================
--- james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAModSeqProvider.java (original)
+++ james/mailbox/trunk/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAModSeqProvider.java Mon Jun 29 08:21:12 2015
@@ -25,11 +25,12 @@ import javax.persistence.PersistenceExce
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.store.mail.AbstractLockingModSeqProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-public class JPAModSeqProvider extends AbstractLockingModSeqProvider<Long>{
+public class JPAModSeqProvider extends AbstractLockingModSeqProvider<JPAId> {
private EntityManagerFactory factory;
@@ -39,12 +40,12 @@ public class JPAModSeqProvider extends A
}
@Override
- public long highestModSeq(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ public long highestModSeq(MailboxSession session, Mailbox<JPAId> mailbox) throws MailboxException {
EntityManager manager = null;
try {
manager = factory.createEntityManager();
manager.getTransaction().begin();
- long highest = (Long) manager.createNamedQuery("findHighestModSeq").setParameter("idParam", mailbox.getMailboxId()).getSingleResult();
+ long highest = (Long) manager.createNamedQuery("findHighestModSeq").setParameter("idParam", mailbox.getMailboxId().getRawId()).getSingleResult();
manager.getTransaction().commit();
return highest;
} catch (PersistenceException e) {
@@ -60,12 +61,12 @@ public class JPAModSeqProvider extends A
}
@Override
- protected long lockedNextModSeq(MailboxSession session, Mailbox<Long> mailbox) throws MailboxException {
+ protected long lockedNextModSeq(MailboxSession session, Mailbox<JPAId> mailbox) throws MailboxException {
EntityManager manager = null;
try {
manager = factory.createEntityManager();
manager.getTransaction().begin();
- JPAMailbox m = manager.find(JPAMailbox.class, mailbox.getMailboxId());
+ JPAMailbox m = manager.find(JPAMailbox.class, mailbox.getMailboxId().getRawId());
long modSeq = m.consumeModSeq();
manager.persist(m);
manager.getTransaction().commit();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org