http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index 355070b..cc7083c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -547,26 +547,23 @@ public class StoreMailboxManager implements MailboxManager { final List<MailboxId> mailboxIds = new ArrayList<MailboxId>(); for (final MailboxPath mailbox : mailboxPath.getHierarchyLevels(getDelimiter())) - locker.executeWithLock(mailboxSession, mailbox, new LockAwareExecution<Void>() { + locker.executeWithLock(mailboxSession, mailbox, (LockAwareExecution<Void>) () -> { + if (!mailboxExists(mailbox, mailboxSession)) { + final Mailbox m = doCreateMailbox(mailbox, mailboxSession); + final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession); + mapper.execute(new TransactionalMapper.VoidTransaction() { - public Void execute() throws MailboxException { - if (!mailboxExists(mailbox, mailboxSession)) { - final org.apache.james.mailbox.store.mail.model.Mailbox m = doCreateMailbox(mailbox, mailboxSession); - final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession); - mapper.execute(new TransactionalMapper.VoidTransaction() { + public void runVoid() throws MailboxException { + mailboxIds.add(mapper.save(m)); + } - public void runVoid() throws MailboxException { - mailboxIds.add(mapper.save(m)); - } - - }); - - // notify listeners - dispatcher.mailboxAdded(mailboxSession, m); - } - return null; + }); + // notify listeners + dispatcher.mailboxAdded(mailboxSession, m); } + return null; + }, true); if (!mailboxIds.isEmpty()) { @@ -581,21 +578,17 @@ public class StoreMailboxManager implements MailboxManager { session.getLog().info("deleteMailbox " + mailboxPath); final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session); - Mailbox mailbox = mapper.execute(new Mapper.Transaction<Mailbox>() { - - public Mailbox run() throws MailboxException { - final Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); - if (mailbox == null) { - throw new MailboxNotFoundException("Mailbox not found"); - } - - // We need to create a copy of the mailbox as maybe we can not refer to the real - // mailbox once we remove it - SimpleMailbox m = new SimpleMailbox(mailbox); - mapper.delete(mailbox); - return m; + Mailbox mailbox = mapper.execute((Mapper.Transaction<Mailbox>) () -> { + final Mailbox mailbox1 = mapper.findMailboxByPath(mailboxPath); + if (mailbox1 == null) { + throw new MailboxNotFoundException("Mailbox not found"); } + // We need to create a copy of the mailbox as maybe we can not refer to the real + // mailbox once we remove it + SimpleMailbox m = new SimpleMailbox(mailbox1); + mapper.delete(mailbox1); + return m; }); dispatcher.mailboxDeleted(session, mailbox); @@ -629,24 +622,21 @@ public class StoreMailboxManager implements MailboxManager { // rename submailboxes final MailboxPath children = new MailboxPath(MailboxConstants.USER_NAMESPACE, from.getUser(), from.getName() + getDelimiter() + "%"); - locker.executeWithLock(session, children, new LockAwareExecution<Void>() { - - public Void execute() throws MailboxException { - final List<Mailbox> subMailboxes = mapper.findMailboxWithPathLike(children); - for (Mailbox sub : subMailboxes) { - final String subOriginalName = sub.getName(); - final String subNewName = to.getName() + subOriginalName.substring(from.getName().length()); - final MailboxPath fromPath = new MailboxPath(children, subOriginalName); - sub.setName(subNewName); - mapper.save(sub); - dispatcher.mailboxRenamed(session, fromPath, sub); - - if (log.isDebugEnabled()) - log.debug("Rename mailbox sub-mailbox " + subOriginalName + " to " + subNewName); - } - return null; - + locker.executeWithLock(session, children, (LockAwareExecution<Void>) () -> { + final List<Mailbox> subMailboxes = mapper.findMailboxWithPathLike(children); + for (Mailbox sub : subMailboxes) { + final String subOriginalName = sub.getName(); + final String subNewName = to.getName() + subOriginalName.substring(from.getName().length()); + final MailboxPath fromPath = new MailboxPath(children, subOriginalName); + sub.setName(subNewName); + mapper.save(sub); + dispatcher.mailboxRenamed(session, fromPath, sub); + + if (log.isDebugEnabled()) + log.debug("Rename mailbox sub-mailbox " + subOriginalName + " to " + subNewName); } + return null; + }, true); } }); @@ -672,11 +662,8 @@ public class StoreMailboxManager implements MailboxManager { private List<MessageRange> copyMessages(MessageRange set, final MailboxSession session, final StoreMessageManager toMailbox, final StoreMessageManager fromMailbox) throws MailboxException { - return copyBatcher.batchMessages(set, new MessageBatcher.BatchedOperation() { - public List<MessageRange> execute(MessageRange messageRange) throws MailboxException { - return fromMailbox.copyTo(messageRange, toMailbox, session); - } - }); + return copyBatcher.batchMessages(set, + messageRange -> fromMailbox.copyTo(messageRange, toMailbox, session)); } @Override @@ -684,11 +671,8 @@ public class StoreMailboxManager implements MailboxManager { final StoreMessageManager toMailbox = (StoreMessageManager) getMailbox(to, session); final StoreMessageManager fromMailbox = (StoreMessageManager) getMailbox(from, session); - return moveBatcher.batchMessages(set, new MessageBatcher.BatchedOperation() { - public List<MessageRange> execute(MessageRange messageRange) throws MailboxException { - return fromMailbox.moveTo(messageRange, toMailbox, session); - } - }); + return moveBatcher.batchMessages(set, + messageRange -> fromMailbox.moveTo(messageRange, toMailbox, session)); } @Override @@ -737,16 +721,7 @@ public class StoreMailboxManager implements MailboxManager { private boolean hasChildIn(Mailbox parentMailbox, List<Mailbox> mailboxesWithPathLike, MailboxSession mailboxSession) { return FluentIterable.from(mailboxesWithPathLike) - .anyMatch(isChildren(parentMailbox, mailboxSession)); - } - - private Predicate<Mailbox> isChildren(final Mailbox parentMailbox, final MailboxSession mailboxSession) { - return new Predicate<Mailbox>() { - @Override - public boolean apply(Mailbox mailbox) { - return mailbox.isChildOf(parentMailbox, mailboxSession); - } - }; + .anyMatch(mailbox -> mailbox.isChildOf(parentMailbox, mailboxSession)); } @Override @@ -871,12 +846,8 @@ public class StoreMailboxManager implements MailboxManager { final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); final MailboxId mailboxId = getMailbox(mailboxPath, session).getId(); - return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() { - @Override - public List<MailboxAnnotation> run() throws MailboxException { - return annotationMapper.getAllAnnotations(mailboxId); - } - }); + return annotationMapper.execute( + () -> annotationMapper.getAllAnnotations(mailboxId)); } @Override @@ -885,12 +856,8 @@ public class StoreMailboxManager implements MailboxManager { final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); final MailboxId mailboxId = getMailbox(mailboxPath, session).getId(); - return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() { - @Override - public List<MailboxAnnotation> run() throws MailboxException { - return annotationMapper.getAnnotationsByKeys(mailboxId, keys); - } - }); + return annotationMapper.execute( + () -> annotationMapper.getAnnotationsByKeys(mailboxId, keys)); } @Override @@ -935,12 +902,8 @@ public class StoreMailboxManager implements MailboxManager { final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); final MailboxId mailboxId = getMailbox(mailboxPath, session).getId(); - return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() { - @Override - public List<MailboxAnnotation> run() throws MailboxException { - return annotationMapper.getAnnotationsByKeysWithOneDepth(mailboxId, keys); - } - }); + return annotationMapper.execute( + () -> annotationMapper.getAnnotationsByKeysWithOneDepth(mailboxId, keys)); } @Override @@ -949,12 +912,8 @@ public class StoreMailboxManager implements MailboxManager { final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session); final MailboxId mailboxId = getMailbox(mailboxPath, session).getId(); - return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() { - @Override - public List<MailboxAnnotation> run() throws MailboxException { - return annotationMapper.getAnnotationsByKeysWithAllDepth(mailboxId, keys); - } - }); + return annotationMapper.execute( + () -> annotationMapper.getAnnotationsByKeysWithAllDepth(mailboxId, keys)); } @Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java index 3d06f87..fc9da70 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java @@ -66,21 +66,6 @@ import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; public class StoreMessageIdManager implements MessageIdManager { - - private static final Function<MailboxMessage, MetadataWithMailboxId> EXTRACT_METADATA_FUNCTION = new Function<MailboxMessage, MetadataWithMailboxId>() { - @Override - public MetadataWithMailboxId apply(MailboxMessage mailboxMessage) { - return new MetadataWithMailboxId(new SimpleMessageMetaData(mailboxMessage), mailboxMessage.getMailboxId()); - } - }; - - private static final Function<MailboxMessage, MailboxId> EXTRACT_MAILBOX_ID_FUNCTION = new Function<MailboxMessage, MailboxId>() { - @Override - public MailboxId apply(MailboxMessage input) { - return input.getMailboxId(); - } - }; - private final MailboxSessionMapperFactory mailboxSessionMapperFactory; private final MailboxEventDispatcher dispatcher; private final MessageId.Factory messageIdFactory; @@ -118,7 +103,7 @@ public class StoreMessageIdManager implements MessageIdManager { final MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession); List<MailboxMessage> messageList = messageIdMapper.find(messageIds, MessageMapper.FetchType.Full); ImmutableSet<MailboxId> mailboxIds = FluentIterable.from(messageList) - .transform(EXTRACT_MAILBOX_ID_FUNCTION) + .transform(MailboxMessage::getMailboxId) .toSet(); final ImmutableSet<MailboxId> allowedMailboxIds = FluentIterable.from(mailboxIds) .filter(mailboxBelongsToUser(mailboxSession, mailboxMapper)) @@ -142,7 +127,9 @@ public class StoreMessageIdManager implements MessageIdManager { Iterable<MetadataWithMailboxId> metadatasWithMailbox = FluentIterable .from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata)) .filter(inMailboxes(mailboxIds)) - .transform(EXTRACT_METADATA_FUNCTION); + .transform(mailboxMessage -> new MetadataWithMailboxId( + new SimpleMessageMetaData(mailboxMessage), + mailboxMessage.getMailboxId())); messageIdMapper.delete(messageId, mailboxIds); @@ -164,7 +151,7 @@ public class StoreMessageIdManager implements MessageIdManager { if (!mailboxMessages.isEmpty()) { ImmutableSet<MailboxId> currentMailboxes = FluentIterable.from(mailboxMessages) - .transform(EXTRACT_MAILBOX_ID_FUNCTION) + .transform(MailboxMessage::getMailboxId) .toSet(); HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds); List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes)); @@ -253,38 +240,27 @@ public class StoreMessageIdManager implements MessageIdManager { } private Function<MailboxMessage, MessageResult> messageResultConverter(final MessageResult.FetchGroup fetchGroup) { - return new Function<MailboxMessage, MessageResult>() { - @Override - public MessageResult apply(MailboxMessage input) { - try { - return ResultUtils.loadMessageResult(input, fetchGroup); - } catch (MailboxException e) { - throw new WrappedException(e); - } + return input -> { + try { + return ResultUtils.loadMessageResult(input, fetchGroup); + } catch (MailboxException e) { + throw new WrappedException(e); } }; } private Predicate<MailboxMessage> inMailboxes(final Collection<MailboxId> mailboxIds) { - return new Predicate<MailboxMessage>() { - @Override - public boolean apply(MailboxMessage mailboxMessage) { - return mailboxIds.contains(mailboxMessage.getMailboxId()); - } - }; + return mailboxMessage -> mailboxIds.contains(mailboxMessage.getMailboxId()); } private Predicate<MailboxId> mailboxBelongsToUser(final MailboxSession mailboxSession, final MailboxMapper mailboxMapper) { - return new Predicate<MailboxId>() { - @Override - public boolean apply(MailboxId mailboxId) { - try { - Mailbox currentMailbox = mailboxMapper.findMailboxById(mailboxId); - return belongsToCurrentUser(currentMailbox, mailboxSession); - } catch (MailboxException e) { - mailboxSession.getLog().error(String.format("Can not retrieve mailboxPath associated with %s", mailboxId.serialize()), e); - return false; - } + return mailboxId -> { + try { + Mailbox currentMailbox = mailboxMapper.findMailboxById(mailboxId); + return belongsToCurrentUser(currentMailbox, mailboxSession); + } catch (MailboxException e) { + mailboxSession.getLog().error(String.format("Can not retrieve mailboxPath associated with %s", mailboxId.serialize()), e); + return false; } }; } @@ -292,7 +268,7 @@ public class StoreMessageIdManager implements MessageIdManager { private Predicate<MailboxMessage> messageBelongsToUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) { return Predicates.compose( mailboxBelongsToUser(mailboxSession, mailboxMapper), - EXTRACT_MAILBOX_ID_FUNCTION); + MailboxMessage::getMailboxId); } private void allowOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws MailboxNotFoundException { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 137433c..e4e3c30 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -82,7 +82,6 @@ import org.apache.james.mailbox.store.quota.QuotaChecker; import org.apache.james.mailbox.store.search.MessageSearchIndex; import org.apache.james.mailbox.store.streaming.BodyOffsetInputStream; import org.apache.james.mailbox.store.streaming.CountingInputStream; -import org.apache.james.mailbox.store.transaction.Mapper; import org.apache.james.mime4j.MimeException; import org.apache.james.mime4j.message.DefaultBodyDescriptorBuilder; import org.apache.james.mime4j.message.HeaderImpl; @@ -95,7 +94,6 @@ import org.apache.james.util.IteratorWrapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; @@ -140,15 +138,6 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana private static final Logger LOG = LoggerFactory.getLogger(StoreMessageManager.class); - private static final Predicate<MessageAttachment> NOT_INLINE_ATTACHMENT() { - return new Predicate<MessageAttachment>() { - @Override - public boolean apply(MessageAttachment input) { - return !input.isInlinedWithCid(); - } - }; - } - private final Mailbox mailbox; private final MailboxEventDispatcher dispatcher; @@ -427,16 +416,12 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana new QuotaChecker(quotaManager, quotaRootResolver, mailbox).tryAddition(1, size); - return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<ComposedMessageId>() { - - @Override - public ComposedMessageId execute() throws MailboxException { - MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession); + return locker.executeWithLock(mailboxSession, getMailboxPath(), () -> { + MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession); - Mailbox mailbox = getMailboxEntity(); - dispatcher.added(mailboxSession, mailbox, message); - return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid()); - } + Mailbox mailbox = getMailboxEntity(); + dispatcher.added(mailboxSession, mailbox, message); + return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid()); }, true); } catch (IOException e) { @@ -462,7 +447,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } private boolean hasNonInlinedAttachment(List<MessageAttachment> attachments) { - return FluentIterable.from(attachments).anyMatch(NOT_INLINE_ATTACHMENT()); + return FluentIterable.from(attachments) + .anyMatch(messageAttachment -> !messageAttachment.isInlinedWithCid()); } private List<MessageAttachment> extractAttachments(SharedFileInputStream contentIn) { @@ -500,10 +486,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana final Flags permanentFlags = getPermanentFlags(mailboxSession); final long uidValidity = getMailboxEntity().getUidValidity(); MessageUid uidNext = mapperFactory.getMessageMapper(mailboxSession).getLastUid(mailbox) - .transform(new Function<MessageUid, MessageUid>() { - public MessageUid apply(MessageUid input) { - return input.next(); - }}) + .transform(MessageUid::next) .or(MessageUid.MIN_VALUE); final long highestModSeq = mapperFactory.getMessageMapper(mailboxSession).getHighestModSeq(mailbox); final long messageCount; @@ -597,12 +580,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession); - Iterator<UpdatedFlags> it = messageMapper.execute(new Mapper.Transaction<Iterator<UpdatedFlags>>() { - - public Iterator<UpdatedFlags> run() throws MailboxException { - return messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(flags, flagsUpdateMode), set); - } - }); + Iterator<UpdatedFlags> it = messageMapper.execute(() -> messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(flags, flagsUpdateMode), set)); final SortedMap<MessageUid, UpdatedFlags> uFlags = new TreeMap<MessageUid, UpdatedFlags>(); @@ -612,7 +590,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana uFlags.put(flag.getUid(), flag); } - dispatcher.flagsUpdated(mailboxSession, new ArrayList<MessageUid>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values())); + dispatcher.flagsUpdated(mailboxSession, new ArrayList<>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values())); return newFlagsByUid; } @@ -630,13 +608,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana throw new ReadOnlyException(new StoreMailboxPath(toMailbox.getMailboxEntity()), session.getPathDelimiter()); } - return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), new MailboxPathLocker.LockAwareExecution<List<MessageRange>>() { - - @Override - public List<MessageRange> execute() throws MailboxException { - SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session); - return MessageRange.toRanges(new ArrayList<MessageUid>(copiedUids.keySet())); - } + return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> { + SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session); + return MessageRange.toRanges(new ArrayList<>(copiedUids.keySet())); }, true); } @@ -657,30 +631,22 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } //TODO lock the from mailbox too, in a non-deadlocking manner - how? - return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), new MailboxPathLocker.LockAwareExecution<List<MessageRange>>() { - - @Override - public List<MessageRange> execute() throws MailboxException { - SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session); - return MessageRange.toRanges(new ArrayList<MessageUid>(movedUids.keySet())); - } + return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> { + SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session); + return MessageRange.toRanges(new ArrayList<>(movedUids.keySet())); }, true); } protected MessageMetaData appendMessageToStore(final MailboxMessage message, final List<MessageAttachment> messageAttachments, MailboxSession session) throws MailboxException { final MessageMapper messageMapper = mapperFactory.getMessageMapper(session); final AttachmentMapper attachmentMapper = mapperFactory.getAttachmentMapper(session); - return mapperFactory.getMessageMapper(session).execute(new Mapper.Transaction<MessageMetaData>() { - - public MessageMetaData run() throws MailboxException { - ImmutableList.Builder<Attachment> attachments = ImmutableList.builder(); - for (MessageAttachment attachment : messageAttachments) { - attachments.add(attachment.getAttachment()); - } - attachmentMapper.storeAttachments(attachments.build()); - return messageMapper.add(getMailboxEntity(), message); + return mapperFactory.getMessageMapper(session).execute(() -> { + ImmutableList.Builder<Attachment> attachments = ImmutableList.builder(); + for (MessageAttachment attachment : messageAttachments) { + attachments.add(attachment.getAttachment()); } - + attachmentMapper.storeAttachments(attachments.build()); + return messageMapper.add(getMailboxEntity(), message); }); } @@ -713,23 +679,19 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession); - return messageMapper.execute(new Mapper.Transaction<List<MessageUid>>() { - - public List<MessageUid> run() throws MailboxException { - final List<MessageUid> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity()); + return messageMapper.execute(() -> { + final List<MessageUid> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity()); - // Convert to MessageRanges so we may be able to optimize the - // flag update - List<MessageRange> ranges = MessageRange.toRanges(members); - for (MessageRange range : ranges) { - if (reset) { - // only call save if we need to - messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(new Flags(Flag.RECENT), FlagsUpdateMode.REMOVE), range); - } + // Convert to MessageRanges so we may be able to optimize the + // flag update + List<MessageRange> ranges = MessageRange.toRanges(members); + for (MessageRange range : ranges) { + if (reset) { + // only call save if we need to + messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(new Flags(Flag.RECENT), FlagsUpdateMode.REMOVE), range); } - return members; } - + return members; }); } @@ -738,13 +700,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana final MessageMapper messageMapper = mapperFactory.getMessageMapper(session); - return messageMapper.execute(new Mapper.Transaction<Map<MessageUid, MessageMetaData>>() { - - public Map<MessageUid, MessageMetaData> run() throws MailboxException { - return messageMapper.expungeMarkedForDeletionInMailbox(getMailboxEntity(), range); - } - - }); + return messageMapper.execute( + () -> messageMapper.expungeMarkedForDeletionInMailbox(getMailboxEntity(), range)); } @Override @@ -763,13 +720,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana while (originalRows.hasNext()) { final MailboxMessage originalMessage = originalRows.next(); quotaChecker.tryAddition(1, originalMessage.getFullContentOctets()); - MessageMetaData data = messageMapper.execute(new Mapper.Transaction<MessageMetaData>() { - public MessageMetaData run() throws MailboxException { - return messageMapper.copy(getMailboxEntity(), originalMessage); - - } - - }); + MessageMetaData data = messageMapper.execute( + () -> messageMapper.copy(getMailboxEntity(), originalMessage)); copiedRows.add(data); } return copiedRows.iterator(); @@ -783,12 +735,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana while (originalRows.hasNext()) { final MailboxMessage originalMessage = originalRows.next(); originalRowsCopy.add(new SimpleMessageMetaData(originalMessage)); - MessageMetaData data = messageMapper.execute(new Mapper.Transaction<MessageMetaData>() { - public MessageMetaData run() throws MailboxException { - return messageMapper.move(getMailboxEntity(), originalMessage); - } - - }); + MessageMetaData data = messageMapper.execute( + () -> messageMapper.move(getMailboxEntity(), originalMessage)); movedRows.add(data); } return new MoveResult(movedRows.iterator(), originalRowsCopy.iterator()); @@ -897,11 +845,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana private Iterator<MessageUid> listAllMessageUids(MailboxSession session) throws MailboxException { final MessageMapper messageMapper = mapperFactory.getMessageMapper(session); - return messageMapper.execute(new Mapper.Transaction<Iterator<MessageUid>>() { - @Override - public Iterator<MessageUid> run() throws MailboxException { - return messageMapper.listAllMessageUids(mailbox); - } - }); + return messageMapper.execute( + () -> messageMapper.listAllMessageUids(mailbox)); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java index 33f1e75..81c5793 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java @@ -19,12 +19,13 @@ package org.apache.james.mailbox.store.event; -import org.apache.james.mailbox.MailboxListener; - -import javax.annotation.PreDestroy; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import javax.annotation.PreDestroy; + +import org.apache.james.mailbox.MailboxListener; + public class AsynchronousEventDelivery implements EventDelivery { private final ExecutorService threadPoolExecutor; @@ -37,12 +38,7 @@ public class AsynchronousEventDelivery implements EventDelivery { @Override public void deliver(final MailboxListener mailboxListener, final MailboxListener.Event event) { - threadPoolExecutor.submit(new Runnable() { - @Override - public void run() { - synchronousEventDelivery.deliver(mailboxListener, event); - } - }); + threadPoolExecutor.submit(() -> synchronousEventDelivery.deliver(mailboxListener, event)); } @PreDestroy http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java index 3277d4c..3598eaa 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java @@ -19,18 +19,18 @@ package org.apache.james.mailbox.store.json.event.dto; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Function; -import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.store.SimpleMailboxSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.collect.Lists; public class MailboxSessionDataTransferObject { @JsonProperty() @@ -61,11 +61,7 @@ public class MailboxSessionDataTransferObject { separator = session.getPathDelimiter(); sessionType = extractSessionType(session); sessionId = session.getSessionId(); - locales = Lists.transform(session.getUser().getLocalePreferences(), new Function<Locale, LocaleDataTransferObject>() { - public LocaleDataTransferObject apply(Locale locale) { - return new LocaleDataTransferObject(locale); - } - }); + locales = Lists.transform(session.getUser().getLocalePreferences(), LocaleDataTransferObject::new); } @JsonIgnore @@ -83,11 +79,7 @@ public class MailboxSessionDataTransferObject { private List<Locale> retrieveLocales() { if (locales != null) { - return Lists.transform(locales, new Function<LocaleDataTransferObject, Locale>() { - public Locale apply(LocaleDataTransferObject localeDataTransferObject) { - return localeDataTransferObject.getLocale(); - } - }); + return Lists.transform(locales, LocaleDataTransferObject::getLocale); } else { return new ArrayList<Locale>(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java index e7c3e93..637d003 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java @@ -49,12 +49,8 @@ public class MessageMetaDataDataTransferObject { private static final Logger LOG = LoggerFactory.getLogger(MessageMetaDataDataTransferObject.class); - private static final ThreadLocal<SimpleDateFormat> simpleDateFormat = new ThreadLocal<SimpleDateFormat>(){ - protected SimpleDateFormat initialValue() - { - return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - } - }; + private static final ThreadLocal<SimpleDateFormat> simpleDateFormat = ThreadLocal.withInitial( + () -> new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")); private static Date parse(String date) throws ParseException { if (date != null) { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java index bd0a31c..e5d8103 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java @@ -20,7 +20,6 @@ package org.apache.james.mailbox.store.mail; import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MailboxPathLocker; -import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxId; @@ -43,13 +42,10 @@ public abstract class AbstractLockingModSeqProvider implements ModSeqProvider{ @Override public long nextModSeq(final MailboxSession session, final Mailbox mailbox) throws MailboxException { - return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<Long>() { - - @Override - public Long execute() throws MailboxException { - return lockedNextModSeq(session, mailbox); - } - }, true); + boolean writeLock = true; + return locker.executeWithLock(session, new StoreMailboxPath(mailbox), + () -> lockedNextModSeq(session, mailbox), + writeLock); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java index 33586dc..d3d5c8e 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java @@ -20,7 +20,6 @@ package org.apache.james.mailbox.store.mail; import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MailboxPathLocker; -import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; @@ -45,13 +44,10 @@ public abstract class AbstractLockingUidProvider implements UidProvider{ @Override public MessageUid nextUid(final MailboxSession session, final Mailbox mailbox) throws MailboxException { - return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<MessageUid>() { - - @Override - public MessageUid execute() throws MailboxException { - return lockedNextUid(session, mailbox); - } - }, true); + boolean writeLock = true; + return locker.executeWithLock(session, new StoreMailboxPath(mailbox), + () -> lockedNextUid(session, mailbox), + writeLock); } /** http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java index cae0753..0cf6d8b 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java @@ -36,7 +36,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.transaction.TransactionalMapper; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.Iterators; @@ -46,12 +45,6 @@ import com.google.common.collect.Iterators; * */ public abstract class AbstractMessageMapper extends TransactionalMapper implements MessageMapper { - private static final Function<MailboxMessage, MessageUid> TO_UID = new Function<MailboxMessage, MessageUid>() { - @Override - public MessageUid apply(MailboxMessage input) { - return input.getUid(); - } - }; private static final int UNLIMITED = -1; @@ -159,6 +152,7 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen @Override public Iterator<MessageUid> listAllMessageUids(Mailbox mailbox) throws MailboxException { - return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Metadata, UNLIMITED), TO_UID); + return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Metadata, UNLIMITED), + MailboxMessage::getUid); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java index 62bf74e..63f80af 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java @@ -161,28 +161,19 @@ public class MessageParser { } private Optional<String> contentType(Optional<ContentTypeField> contentTypeField) { - return contentTypeField.transform(new Function<ContentTypeField, Optional<String>>() { - @Override - public Optional<String> apply(ContentTypeField field) { - return Optional.fromNullable(field.getMimeType()); - } - }).or(Optional.<String> absent()); + return contentTypeField.transform(field -> Optional.fromNullable(field.getMimeType())) + .or(Optional.<String> absent()); } private Optional<String> name(Optional<ContentTypeField> contentTypeField) { - return contentTypeField.transform(new Function<ContentTypeField, Optional<String>>() { - @Override - public Optional<String> apply(ContentTypeField field) { - return Optional.fromNullable(field.getParameter("name")) - .transform( - new Function<String, String>() { - public String apply(String input) { - DecodeMonitor monitor = null; - return DecoderUtil.decodeEncodedWords(input, monitor); - } - }); - } - }).or(Optional.<String> absent()); + return contentTypeField + .transform(field -> Optional.fromNullable(field.getParameter("name")) + .transform( + fieldValue -> { + DecodeMonitor monitor = null; + return DecoderUtil.decodeEncodedWords(fieldValue, monitor); + })) + .or(Optional.<String> absent()); } private Optional<Cid> cid(Optional<ContentIdField> contentIdField) { @@ -194,12 +185,7 @@ public class MessageParser { } private Function<ContentIdField, Optional<Cid>> toCid() { - return new Function<ContentIdField, Optional<Cid>>() { - @Override - public Optional<Cid> apply(ContentIdField input) { - return cidParser.parse(input.getId()); - } - }; + return contentIdField -> cidParser.parse(contentIdField.getId()); } private boolean isMultipart(Entity entity) { @@ -207,12 +193,8 @@ public class MessageParser { } private boolean isInline(Optional<ContentDispositionField> contentDispositionField) { - return contentDispositionField.transform(new Function<ContentDispositionField, Boolean>() { - @Override - public Boolean apply(ContentDispositionField field) { - return field.isInline(); - } - }).or(false); + return contentDispositionField.transform(ContentDispositionField::isInline) + .or(false); } private boolean isAttachment(Entity part, Context context) { @@ -220,13 +202,9 @@ public class MessageParser { return false; } return Optional.fromNullable(part.getDispositionType()) - .transform(new Function<String, Boolean>() { - - @Override - public Boolean apply(String dispositionType) { - return ATTACHMENT_CONTENT_DISPOSITIONS.contains(dispositionType.toLowerCase(Locale.US)); - } - }).or(false); + .transform(dispositionType -> ATTACHMENT_CONTENT_DISPOSITIONS.contains( + dispositionType.toLowerCase(Locale.US))) + .or(false); } private boolean isTextPart(Entity part) { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java index f69a458..2c88849 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java @@ -62,14 +62,9 @@ public class PropertyBuilder { public static final String HAS_ATTACHMENT = "HAS_ATTACHMENT"; public static Predicate<Property> isHasAttachmentProperty() { - return new Predicate<Property>() { - @Override - public boolean apply(Property input) { - return input.getNamespace().equals(PropertyBuilder.JAMES_INTERNALS) - && input.getLocalName().equals(PropertyBuilder.HAS_ATTACHMENT) - && input.getValue().equals("true"); - } - }; + return property -> property.getNamespace().equals(PropertyBuilder.JAMES_INTERNALS) + && property.getLocalName().equals(PropertyBuilder.HAS_ATTACHMENT) + && property.getValue().equals("true"); } private Long textualLineCount; @@ -77,7 +72,7 @@ public class PropertyBuilder { public PropertyBuilder(List<Property> props) { textualLineCount = null; - properties = new ArrayList<SimpleProperty>(props.size()); + properties = new ArrayList<>(props.size()); for (Property property:props) { properties.add(new SimpleProperty(property)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java index 110430f..b95e153 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java @@ -24,21 +24,11 @@ import javax.mail.Flags; import org.apache.james.mailbox.ApplicableFlagBuilder; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.FluentIterable; public class ApplicableFlagCalculator { - private static Function<MailboxMessage, Flags> toFlags() { - return new Function<MailboxMessage, Flags>() { - @Override - public Flags apply(MailboxMessage mailboxMessage) { - return mailboxMessage.createFlags(); - } - }; - } - private final Iterable<MailboxMessage> mailboxMessages; public ApplicableFlagCalculator(Iterable<MailboxMessage> mailboxMessages) { @@ -49,7 +39,7 @@ public class ApplicableFlagCalculator { public Flags computeApplicableFlags() { return ApplicableFlagBuilder.builder() .add(FluentIterable.from(mailboxMessages) - .transform(toFlags()) + .transform(MailboxMessage::createFlags) .toArray(Flags.class)) .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java index 0a7df7d..4c66901 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java @@ -36,7 +36,6 @@ import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import com.google.common.base.Function; import com.google.common.base.Throwables; import com.google.common.collect.Lists; @@ -70,14 +69,11 @@ public class CurrentQuotaCalculator { private List<Mailbox> retrieveMailboxes(QuotaRoot quotaRoot, MailboxSession session) throws MailboxException { List<MailboxPath> paths = quotaRootResolver.retrieveAssociatedMailboxes(quotaRoot, session); final MailboxMapper mapper = factory.getMailboxMapper(session); - return Lists.transform(paths, new Function<MailboxPath, Mailbox>() { - @Override - public Mailbox apply(MailboxPath mailboxPath) { - try { - return mapper.findMailboxByPath(mailboxPath); - } catch (MailboxException e) { - throw Throwables.propagate(e); - } + return Lists.transform(paths, mailboxPath -> { + try { + return mapper.findMailboxByPath(mailboxPath); + } catch (MailboxException e) { + throw Throwables.propagate(e); } }); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java index 1e49b7d..4fa9cf6 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java @@ -31,7 +31,6 @@ import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.mail.model.Mailbox; -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.Lists; @@ -67,12 +66,8 @@ public class DefaultQuotaRootResolver implements QuotaRootResolver { } String namespace = parts.get(0); String user = parts.get(1); - return Lists.transform(factory.getMailboxMapper(mailboxSession).findMailboxWithPathLike(new MailboxPath(namespace, user, "%")), - new Function<Mailbox, MailboxPath>() { - @Override - public MailboxPath apply(Mailbox idMailbox) { - return idMailbox.generateAssociatedPath(); - } - }); + return Lists.transform(factory.getMailboxMapper(mailboxSession) + .findMailboxWithPathLike(new MailboxPath(namespace, user, "%")), + Mailbox::generateAssociatedPath); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java index 84dc5fc..78fa9af 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java @@ -70,7 +70,6 @@ import org.apache.james.mime4j.stream.MimeConfig; import org.apache.james.mime4j.util.MimeUtil; import org.apache.james.mime4j.utils.search.MessageMatcher; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; @@ -123,15 +122,10 @@ public class MessageSearches implements Iterable<SimpleMessageSearchIndex.Search List<MailboxMessage> sortedResults = FluentIterable.from(builder.build()) .toSortedList(CombinedComparator.create(query.getSorts())); return FluentIterable.from(sortedResults) - .transform(new Function<MailboxMessage, SimpleMessageSearchIndex.SearchResult>() { - @Override - public SimpleMessageSearchIndex.SearchResult apply(MailboxMessage input) { - return new SimpleMessageSearchIndex.SearchResult( - Optional.of(input.getMessageId()), - input.getMailboxId(), - input.getUid()); - } - }) + .transform(mailboxMessage -> new SimpleMessageSearchIndex.SearchResult( + Optional.of(mailboxMessage.getMessageId()), + mailboxMessage.getMailboxId(), + mailboxMessage.getUid())) .iterator(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java index d95b22a..082d90c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.EnumSet; import java.util.Iterator; import java.util.List; -import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -32,7 +31,6 @@ import org.apache.james.mailbox.MailboxManager.SearchCapabilities; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; -import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageRange; @@ -49,9 +47,7 @@ import org.apache.james.mailbox.store.mail.MessageMapperFactory; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import com.google.common.base.Function; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; @@ -103,8 +99,8 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex { public Iterator<MessageUid> search(MailboxSession session, final Mailbox mailbox, SearchQuery query) throws MailboxException { Preconditions.checkArgument(session != null, "'session' is mandatory"); return FluentIterable.from(searchResults(session, ImmutableList.of(mailbox), query)) - .filter(isInMailbox(mailbox)) - .transform(toMessageUid()) + .filter(searchResult -> searchResult.getMailboxId().equals(mailbox.getMailboxId())) + .transform(SearchResult::getMessageUid) .iterator(); } @@ -155,8 +151,9 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex { public List<MessageId> search(MailboxSession session, final MultimailboxesSearchQuery searchQuery, long limit) throws MailboxException { List<Mailbox> allUserMailboxes = mailboxMapperFactory.getMailboxMapper(session) .findMailboxWithPathLike(new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), WILDCARD)); - FluentIterable<Mailbox> filteredMailboxes = FluentIterable.from(allUserMailboxes) - .filter(notInMailboxes(searchQuery.getNotInMailboxes())); + FluentIterable<Mailbox> filteredMailboxes = FluentIterable + .from(allUserMailboxes) + .filter(mailbox -> !searchQuery.getNotInMailboxes().contains(mailbox.getMailboxId())); if (searchQuery.getInMailboxes().isEmpty()) { return getAsMessageIds(searchResults(session, filteredMailboxes, searchQuery.getSearchQuery()), limit); } @@ -169,48 +166,12 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex { return getAsMessageIds(searchResults(session, queriedMailboxes, searchQuery.getSearchQuery()), limit); } - private Predicate<Mailbox> notInMailboxes(final Set<MailboxId> mailboxIds) { - return new Predicate<Mailbox>() { - @Override - public boolean apply(Mailbox input) { - return !mailboxIds.contains(input.getMailboxId()); - } - }; - } - private List<MessageId> getAsMessageIds(List<SearchResult> temp, long limit) { return FluentIterable.from(temp) - .transform(toMessageId()) + .transform(searchResult -> searchResult.getMessageId().get()) .filter(SearchUtil.distinct()) .limit(Long.valueOf(limit).intValue()) .toList(); } - private Function<SearchResult, MessageId> toMessageId() { - return new Function<SearchResult, MessageId>() { - @Override - public MessageId apply(SearchResult input) { - return input.getMessageId().get(); - } - }; - } - - private Function<SearchResult, MessageUid> toMessageUid() { - return new Function<SearchResult, MessageUid>() { - @Override - public MessageUid apply(SearchResult input) { - return input.getMessageUid(); - } - }; - } - - private Predicate<SearchResult> isInMailbox(final Mailbox mailbox) { - return new Predicate<SearchResult>() { - @Override - public boolean apply(SearchResult input) { - return input.getMailboxId().equals(mailbox.getMailboxId()); - } - }; - } - } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java index 436fcea..38bae1d 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java @@ -44,12 +44,7 @@ public class CombinedComparator implements Comparator<MailboxMessage>{ } private static Function<Sort, Comparator<MailboxMessage>> toComparator() { - return new Function<Sort, Comparator<MailboxMessage>>() { - @Override - public Comparator<MailboxMessage> apply(Sort input) { - return optionalResverse(toComparator(input), input.isReverse()); - } - }; + return sort -> optionalResverse(toComparator(sort), sort.isReverse()); } private static Comparator<MailboxMessage> toComparator(Sort sort) { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java index b524d7c..a78e7c0 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java @@ -474,12 +474,7 @@ public abstract class AbstractCombinationManagerTest { } private Predicate<MessageResult> messageInMailbox2() { - return new Predicate<MessageResult>() { - @Override - public boolean apply(MessageResult input) { - return input.getMailboxId().equals(mailbox2.getMailboxId()); - } - }; + return messageResult -> messageResult.getMailboxId().equals(mailbox2.getMailboxId()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java index 4dcd687..0e6bdd8 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java @@ -58,32 +58,10 @@ public abstract class AbstractMessageIdManagerStorageTest { private static final MessageUid messageUid1 = MessageUid.of(111); private static final MessageUid messageUid2 = MessageUid.of(222); - private static final Function<MessageResult, Flags> getFlags() { - return new Function<MessageResult, Flags>() { - @Override - public Flags apply(MessageResult input) { - return input.getFlags(); - } - }; - } - private static final Function<MessageResult, Map.Entry<MessageId, Flags>> toMapEntryOfFlags() { - return new Function<MessageResult, Map.Entry<MessageId, Flags>>() { - @Override - public Map.Entry<MessageId, Flags> apply(MessageResult input) { - return new AbstractMap.SimpleEntry<MessageId, Flags>(input.getMessageId(), input.getFlags()); - } - }; + return messageResult -> new AbstractMap.SimpleEntry<>(messageResult.getMessageId(), messageResult.getFlags()); } - private static Function<MessageResult, MailboxId> getMailboxId() { - return new Function<MessageResult, MailboxId>() { - @Override - public MailboxId apply(MessageResult input) { - return input.getMailboxId(); - } - }; - } private MessageIdManagerTestSystem testingData; private MessageIdManager messageIdManager; @@ -252,7 +230,7 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session); List<MailboxId> messageMailboxIds = FluentIterable.from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) - .transform(getMailboxId()) + .transform(MessageResult::getMailboxId) .toList(); assertThat(messageMailboxIds).containsOnly(mailbox1.getMailboxId(), mailbox3.getMailboxId()); @@ -414,7 +392,7 @@ public abstract class AbstractMessageIdManagerStorageTest { List<Flags> flags = FluentIterable .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) - .transform(getFlags()) + .transform(MessageResult::getFlags) .toList(); assertThat(flags).hasSize(2); @@ -432,7 +410,7 @@ public abstract class AbstractMessageIdManagerStorageTest { List<Flags> flags = FluentIterable .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(getFlags()) + .transform(MessageResult::getFlags) .toList(); assertThat(flags).hasSize(1); @@ -448,7 +426,7 @@ public abstract class AbstractMessageIdManagerStorageTest { List<Flags> flags = FluentIterable .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(getFlags()) + .transform(MessageResult::getFlags) .toList(); assertThat(flags).hasSize(1); @@ -464,7 +442,7 @@ public abstract class AbstractMessageIdManagerStorageTest { List<Flags> flags = FluentIterable .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(getFlags()) + .transform(MessageResult::getFlags) .toList(); assertThat(flags).hasSize(1); @@ -545,12 +523,7 @@ public abstract class AbstractMessageIdManagerStorageTest { } private Predicate<MessageResult> inMailbox(final MailboxId mailboxId) { - return new Predicate<MessageResult>() { - @Override - public boolean apply(MessageResult input) { - return input.getMailboxId().equals(mailboxId); - } - }; + return messageResult -> messageResult.getMailboxId().equals(mailboxId); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java index 58ac911..97dade9 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java @@ -21,8 +21,6 @@ package org.apache.james.mailbox.store; import static org.assertj.core.api.Assertions.assertThat; -import java.util.List; - import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MessageRange; @@ -32,12 +30,10 @@ import com.google.common.collect.Lists; public class MessageBatcherTest { - private MessageBatcher.BatchedOperation incrementBatcher = new MessageBatcher.BatchedOperation() { - @Override - public List<MessageRange> execute(MessageRange messageRange) throws MailboxException { - return Lists.<MessageRange>newArrayList(MessageRange.range(messageRange.getUidFrom().next(), messageRange.getUidTo().next())); - } - }; + private MessageBatcher.BatchedOperation incrementBatcher = + messageRange -> Lists.<MessageRange>newArrayList(MessageRange.range( + messageRange.getUidFrom().next(), + messageRange.getUidTo().next())); @Test public void batchMessagesShouldWorkOnSingleRangeMode() throws Exception { @@ -59,11 +55,10 @@ public class MessageBatcherTest { public void batchMessagesShouldPropagateExceptions() throws Exception { MessageBatcher messageBatcher = new MessageBatcher(0); - messageBatcher.batchMessages(MessageRange.range(MessageUid.of(1), MessageUid.of(10)), new MessageBatcher.BatchedOperation() { - public List<MessageRange> execute(MessageRange messageRange) throws MailboxException { + messageBatcher.batchMessages(MessageRange.range(MessageUid.of(1), MessageUid.of(10)), + messageRange -> { throw new MailboxException(); - } - }); + }); } @Test(expected = IllegalArgumentException.class) http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java index dbccca7..a517fa5 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java @@ -51,8 +51,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -96,13 +94,11 @@ public class StoreMailboxManagerAnnotationTest { when(mailboxSessionMapperFactory.getAnnotationMapper(eq(session))).thenReturn(annotationMapper); when(mailbox.getMailboxId()).thenReturn(mailboxId); when(mailboxMapper.findMailboxByPath(eq(mailboxPath))).thenReturn(mailbox); - when(annotationMapper.execute(any(Mapper.Transaction.class))).thenAnswer(new Answer<Object>() { - @Override - public Object answer(InvocationOnMock invocationOnMock) throws Throwable { + when(annotationMapper.execute(any(Mapper.Transaction.class))) + .thenAnswer(invocationOnMock -> { Mapper.Transaction<?> transaction = (Mapper.Transaction<?>) invocationOnMock.getArguments()[0]; return transaction.run(); - } - }); + }); storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver, messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE)); http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java index 67107c2..e21ea94 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java @@ -38,7 +38,6 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxCounters; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageRange; -import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.MessageResult.FetchGroup; import org.apache.james.mailbox.model.TestId; import org.apache.james.mailbox.model.UpdatedFlags; @@ -48,7 +47,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage; -import org.assertj.core.api.iterable.Extractor; import org.junit.Test; import com.google.common.base.Optional; @@ -199,12 +197,8 @@ public class StoreMailboxMessageResultIteratorTest { BatchSizes batchSize = BatchSizes.uniqueBatchSize(3); StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, new TestFetchGroup()); - assertThat(it).extracting(new Extractor<MessageResult, Long>(){ - @Override - public Long extract(MessageResult input) { - return input.getUid().asLong(); - } - }).containsExactly(1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l); + assertThat(it).extracting(input -> input.getUid().asLong()) + .containsExactly(1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java index 0c048b5..bef60ea 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java @@ -171,7 +171,7 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory public List<MailboxId> findMailboxes(final MessageId messageId) { return FluentIterable.from(messages) .filter(withMessageId(messageId)) - .transform(toMailboxId()) + .transform(MailboxMessage::getMailboxId) .toList(); } @@ -291,73 +291,36 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory messages.clear(); } - private Function<MailboxMessage, MailboxId> toMailboxId() { - return new Function<MailboxMessage, MailboxId>() { - @Override - public MailboxId apply(MailboxMessage input) { - return input.getMailboxId(); - } - }; - } - private Predicate<MailboxMessage> withMessageIdOneOf(final List<MessageId> messageIds) { - return new Predicate<MailboxMessage>() { - @Override - public boolean apply(MailboxMessage input) { - return messageIds.contains(input.getMessageId()); - } - }; + return mailboxMessage -> messageIds.contains(mailboxMessage.getMessageId()); } private Predicate<MailboxMessage> inMailbox(final MessageId messageId) { - return new Predicate<MailboxMessage>() { - @Override - public boolean apply(MailboxMessage input) { - return input.getMailboxId().equals(messageId); - } - }; + return mailboxMessage -> mailboxMessage.getMailboxId().equals(messageId); } private Predicate<MailboxMessage> inMailboxes(final List<MailboxId> mailboxIds) { - return new Predicate<MailboxMessage>() { - @Override - public boolean apply(MailboxMessage input) { - return mailboxIds.contains(input.getMailboxId()); - } - }; + return mailboxMessage -> mailboxIds.contains(mailboxMessage.getMailboxId()); } private Predicate<MailboxMessage> withMessageId(final MessageId messageId) { - return new Predicate<MailboxMessage>() { - @Override - public boolean apply(MailboxMessage input) { - return input.getMessageId().equals(messageId); - } - }; + return mailboxMessage -> mailboxMessage.getMessageId().equals(messageId); } private Predicate<Map.Entry<MailboxId, UpdatedFlags>> isChanged() { - return new Predicate<Map.Entry<MailboxId, UpdatedFlags>>() { - @Override - public boolean apply(Map.Entry<MailboxId, UpdatedFlags> entry) { - return entry.getValue().flagsChanged(); - } - }; + return entry -> entry.getValue().flagsChanged(); } private Function<MailboxMessage, Map.Entry<MailboxId, UpdatedFlags>> toMapEntryOfUpdatedFlags(final Flags newState, final MessageManager.FlagsUpdateMode updateMode) { - return new Function<MailboxMessage, Map.Entry<MailboxId, UpdatedFlags>>() { - @Override - public Map.Entry<MailboxId, UpdatedFlags> apply(MailboxMessage input) { - Preconditions.checkState(updateMode.equals(MessageManager.FlagsUpdateMode.ADD)); - return new AbstractMap.SimpleEntry<MailboxId, UpdatedFlags>(input.getMailboxId(), - UpdatedFlags.builder() - .uid(input.getUid()) - .modSeq(input.getModSeq()) - .newFlags(newState) - .oldFlags(input.createFlags()) - .build()); - } + return mailboxMessage -> { + Preconditions.checkState(updateMode.equals(MessageManager.FlagsUpdateMode.ADD)); + return new AbstractMap.SimpleEntry<>(mailboxMessage.getMailboxId(), + UpdatedFlags.builder() + .uid(mailboxMessage.getUid()) + .modSeq(mailboxMessage.getModSeq()) + .newFlags(newState) + .oldFlags(mailboxMessage.createFlags()) + .build()); }; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java index 4b9d6d5..44fde73 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java @@ -32,8 +32,6 @@ import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.util.EventCollector; import org.junit.Before; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; public class DefaultDelegatingMailboxListenerTest { @@ -191,14 +189,11 @@ public class DefaultDelegatingMailboxListenerTest { MailboxSession session = new MockMailboxSession("benwa"); MailboxListener.Event event = new MailboxListener.Event(session, MAILBOX_PATH) {}; MailboxListener mockedListener = mock(MailboxListener.class); - when(mockedListener.getType()).thenAnswer(new Answer<MailboxListener.ListenerType>() { - @Override - public MailboxListener.ListenerType answer(InvocationOnMock invocation) throws Throwable { - return MailboxListener.ListenerType.ONCE; - } - }); + when(mockedListener.getType()).thenReturn(MailboxListener.ListenerType.ONCE); doThrow(new RuntimeException()).when(mockedListener).event(event); + defaultDelegatingMailboxListener.addGlobalListener(mockedListener, null); + defaultDelegatingMailboxListener.event(event); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java index 7630138..5cb359e 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java @@ -19,22 +19,20 @@ package org.apache.james.mailbox.store.event; -import org.apache.james.mailbox.MailboxListener; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import org.apache.james.mailbox.MailboxListener; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + public class MixedEventDeliveryTest { @@ -75,12 +73,9 @@ public class MixedEventDeliveryTest { MailboxListener.Event event = new MailboxListener.Event(null, null) {}; when(listener.getExecutionMode()).thenReturn(MailboxListener.ExecutionMode.ASYNCHRONOUS); final CountDownLatch latch = new CountDownLatch(1); - doAnswer(new Answer<Void>() { - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - latch.await(); - return null; - } + doAnswer(invocation -> { + latch.await(); + return null; }).when(listener).event(event); mixedEventDelivery.deliver(listener, event); latch.countDown(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
