JAMES-2107 Run IntelliJ inspection: "Convert to lambas"
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/855a3c87 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/855a3c87 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/855a3c87 Branch: refs/heads/master Commit: 855a3c87e7a903649f986aeff8a5e03c63fd8db5 Parents: f40ce32 Author: benwa <btell...@linagora.com> Authored: Tue Aug 1 17:22:01 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Wed Aug 16 16:44:07 2017 +0700 ---------------------------------------------------------------------- .../james/backends/jpa/JpaTestCluster.java | 12 +- .../james/mailbox/MailboxManagerStressTest.java | 43 +- .../mailbox/hbase/mail/HBaseMessageMapper.java | 9 +- .../mailbox/hbase/HBaseClusterSingleton.java | 14 +- .../mailbox/jpa/mail/JPAAnnotationMapper.java | 84 +-- .../mailbox/jpa/mail/JPAMessageMapper.java | 8 +- .../jpa/mail/TransactionalMailboxMapper.java | 7 +- .../jpa/mail/TransactionalMessageMapper.java | 32 +- .../lucene/search/LuceneMessageSearchIndex.java | 15 +- .../james/mailbox/maildir/MaildirFolder.java | 596 +++++++++---------- .../mailbox/maildir/MaildirMessageName.java | 9 +- .../james/mailbox/maildir/MaildirStore.java | 10 +- .../maildir/mail/MaildirMailboxMapper.java | 8 +- .../inmemory/InMemoryMessageIdManager.java | 43 +- .../inmemory/mail/InMemoryAnnotationMapper.java | 45 +- .../InMemoryMessageIdManagerTestSystem.java | 9 +- .../quota/InMemoryCurrentQuotaManagerTest.java | 30 +- .../mailbox/store/StoreMailboxManager.java | 139 ++--- .../mailbox/store/StoreMessageIdManager.java | 62 +- .../mailbox/store/StoreMessageManager.java | 136 ++--- .../store/event/AsynchronousEventDelivery.java | 14 +- .../dto/MailboxSessionDataTransferObject.java | 26 +- .../dto/MessageMetaDataDataTransferObject.java | 8 +- .../mail/AbstractLockingModSeqProvider.java | 12 +- .../store/mail/AbstractLockingUidProvider.java | 12 +- .../store/mail/AbstractMessageMapper.java | 10 +- .../store/mail/model/impl/MessageParser.java | 54 +- .../store/mail/model/impl/PropertyBuilder.java | 13 +- .../mail/utils/ApplicableFlagCalculator.java | 12 +- .../store/quota/CurrentQuotaCalculator.java | 14 +- .../store/quota/DefaultQuotaRootResolver.java | 11 +- .../mailbox/store/search/MessageSearches.java | 14 +- .../store/search/SimpleMessageSearchIndex.java | 51 +- .../search/comparator/CombinedComparator.java | 7 +- .../store/AbstractCombinationManagerTest.java | 7 +- .../AbstractMessageIdManagerStorageTest.java | 41 +- .../james/mailbox/store/MessageBatcherTest.java | 19 +- .../StoreMailboxManagerAnnotationTest.java | 10 +- .../StoreMailboxMessageResultIteratorTest.java | 10 +- .../store/TestMailboxSessionMapperFactory.java | 67 +-- .../DefaultDelegatingMailboxListenerTest.java | 11 +- .../store/event/MixedEventDeliveryTest.java | 27 +- .../BroadcastDelegatingMailboxListenerTest.java | 94 +-- .../DistantMailboxPathRegisterTest.java | 102 ++-- ...RegisteredDelegatingMailboxListenerTest.java | 111 +--- .../store/mail/model/ListMailboxAssert.java | 12 +- .../store/mail/model/ListMessageAssert.java | 19 +- .../mail/model/ListMessagePropertiesAssert.java | 7 +- .../store/mail/model/MessageIdMapperTest.java | 22 +- .../store/mail/model/MessageMapperTest.java | 20 +- .../quota/DefaultQuotaRootResolverTest.java | 18 +- .../mailbox/store/quota/QuotaCheckerTest.java | 108 +--- .../store/quota/StoreQuotaManagerTest.java | 77 +-- .../james/mailbox/copier/MailboxCopierTest.java | 19 +- .../mailbox/indexer/ReIndexerImplTest.java | 45 +- .../org/apache/mailet/PerRecipientHeaders.java | 11 +- .../mailet/base/MailetPipelineLogging.java | 21 +- .../mailet/base/test/MimeMessageBuilder.java | 13 +- .../james/mailet/AbstractMailetdocsReport.java | 9 +- .../mailet/DefaultDescriptorsExtractor.java | 12 +- .../transport/mailets/RecipientToLowerCase.java | 22 +- .../transport/mailets/UseHeaderRecipients.java | 22 +- .../utils/MailAddressCollectionReader.java | 22 +- .../mailets/RecipientToLowerCaseTest.java | 10 +- .../transport/mailets/StripAttachmentTest.java | 9 +- .../james/mpt/session/ExternalSession.java | 12 +- .../james/mpt/testsuite/HaveSpaceTest.java | 10 +- .../api/AbstractProtocolTransport.java | 11 +- .../api/handler/CommandDispatcher.java | 28 +- .../api/AbstractProtocolTransportTest.java | 35 +- .../james/imap/api/ImapConfiguration.java | 17 +- .../imap/decode/parser/SearchCommandParser.java | 18 +- .../parser/SetAnnotationCommandParser.java | 6 +- .../imap/processor/AuthenticateProcessor.java | 19 +- .../imap/processor/GetAnnotationProcessor.java | 44 +- .../processor/base/SelectedMailboxImplTest.java | 40 +- .../processor/base/UidMsnConverterTest.java | 27 +- .../james/managesieve/core/CoreProcessor.java | 129 ++-- .../AllButStartTlsDelimiterChannelHandler.java | 17 +- .../smtp/core/ReceivedDataLineFilter.java | 37 +- .../protocols/smtp/AbstractSMTPServerTest.java | 8 +- .../org/apache/james/DockerCassandraRule.java | 2 +- .../java/org/apache/james/ESReporterTest.java | 6 +- .../james/utils/ConfigurationsPerformer.java | 2 +- .../org/apache/james/JPAJamesServerMain.java | 2 +- .../james/onami/lifecycle/LifeCycleModule.java | 25 +- .../onami/lifecycle/LifeCycleStageModule.java | 11 +- .../james/onami/lifecycle/StageableMethod.java | 9 +- .../onami/lifecycle/DefaultStagerTestCase.java | 42 +- ...AbstractOSGIAnnotationBeanPostProcessor.java | 10 +- .../util/mime/MessageContentExtractor.java | 2 +- .../concurrency/ConcurrentTestRunnerTest.java | 64 +- .../mailrepository/jcr/JCRMailRepository.java | 19 +- .../org/apache/james/rrt/lib/MappingsImpl.java | 15 +- .../rrt/memory/MemoryRecipientRewriteTable.java | 35 +- .../user/memory/MemoryUsersRepository.java | 19 +- .../dnsservice/api/InMemoryDNSService.java | 14 +- .../library/netmatcher/NetMatcher.java | 6 +- .../mailetcontainer/impl/JamesMailSpooler.java | 62 +- .../mailets/RecipientRewriteTableProcessor.java | 117 +--- .../transport/mailets/jsieve/DiscardAction.java | 13 +- .../mailets/jsieve/SieveMailAdapter.java | 47 +- .../mailets/jsieve/VacationAction.java | 7 +- .../transport/mailets/jsieve/VacationReply.java | 25 +- ...ddressesArrayToMailAddressListConverter.java | 37 +- .../remoteDelivery/DeliveryRunnable.java | 7 +- .../EnhancedMessagingException.java | 7 +- .../InternetAddressConverter.java | 10 +- .../james/transport/util/MailAddressUtils.java | 9 +- .../remoteDelivery/DeliveryRunnableTest.java | 7 +- .../RemoteDeliveryRunningTest.java | 13 +- .../cassandra/cucumber/CassandraStepdefs.java | 2 +- .../cucumber/GetMessagesMethodStepdefs.java | 2 +- .../james/jmap/JWTAuthenticationStrategy.java | 2 +- ...ameterAccessTokenAuthenticationStrategy.java | 2 +- .../james/jmap/mailet/VacationMailet.java | 5 +- .../methods/SetMailboxesCreationProcessor.java | 2 +- .../methods/SetMessagesCreationProcessor.java | 2 +- .../methods/SetMessagesUpdateProcessor.java | 2 +- .../james/jmap/model/MessageProperties.java | 2 +- .../SetMessagesCreationProcessorTest.java | 5 +- .../james/jmap/model/FilterOperatorTest.java | 6 +- .../apache/james/jmap/send/MailSpoolTest.java | 9 +- .../apache/james/jwt/PublicKeyProviderTest.java | 2 +- .../apache/james/pop3server/POP3ServerTest.java | 30 +- .../james/queue/api/mock/MockMailQueue.java | 17 +- .../apache/james/queue/file/FileMailQueue.java | 40 +- .../queue/jms/AbstractJMSMailQueueTest.java | 20 +- 128 files changed, 1212 insertions(+), 2606 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java ---------------------------------------------------------------------- diff --git a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java index 018d492..6baaa31 100644 --- a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java +++ b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java @@ -27,7 +27,6 @@ import javax.persistence.EntityManagerFactory; import org.apache.openjpa.persistence.OpenJPAPersistence; -import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; @@ -52,20 +51,11 @@ public class JpaTestCluster { properties.put("openjpa.MetaDataFactory", "jpa(Types=" + Joiner.on(";").join( FluentIterable.from(clazz) - .transform(toFQDN())) + .transform(Class::getName)) + ")"); return new JpaTestCluster(OpenJPAPersistence.getEntityManagerFactory(properties)); } - private static Function<Class<?>, String> toFQDN() { - return new Function<Class<?>, String>() { - @Override - public String apply(Class<?> input) { - return input.getName(); - } - }; - } - private final EntityManagerFactory entityManagerFactory; private JpaTestCluster(EntityManagerFactory entityManagerFactory) { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java index f92cb11..d8276fe 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java @@ -93,37 +93,34 @@ public abstract class MailboxManagerStressTest { // fire of 1000 append operations for (int i = 0; i < APPEND_OPERATIONS; i++) { - pool.execute(new Runnable() { - - public void run() { - if (fail.get()) { - latch.countDown(); - return; - } + pool.execute(() -> { + if (fail.get()) { + latch.countDown(); + return; + } - try { - MailboxSession session = mailboxManager.createSystemSession(username, LoggerFactory.getLogger("Test")); + try { + MailboxSession mailboxSession = mailboxManager.createSystemSession(username, LoggerFactory.getLogger("Test")); - mailboxManager.startProcessingRequest(session); - MessageManager m = mailboxManager.getMailbox(path, session); - ComposedMessageId messageId = m.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), session, false, new Flags()); + mailboxManager.startProcessingRequest(mailboxSession); + MessageManager m = mailboxManager.getMailbox(path, mailboxSession); + ComposedMessageId messageId = m.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), mailboxSession, false, new Flags()); - System.out.println("Append message with uid=" + messageId.getUid()); - if (uids.put(messageId.getUid(), new Object()) != null) { - fail.set(true); - } - mailboxManager.endProcessingRequest(session); - mailboxManager.logout(session, false); - } catch (Exception e) { - e.printStackTrace(); + System.out.println("Append message with uid=" + messageId.getUid()); + if (uids.put(messageId.getUid(), new Object()) != null) { fail.set(true); - } finally { - latch.countDown(); } + mailboxManager.endProcessingRequest(mailboxSession); + mailboxManager.logout(mailboxSession, false); + } catch (Exception e) { + e.printStackTrace(); + fail.set(true); + } finally { + latch.countDown(); + } - } }); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java index 6c0843f..b18579a 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java @@ -85,7 +85,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.utils.ApplicableFlagCalculator; import org.apache.james.mailbox.store.transaction.NonTransactionalMapper; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; @@ -98,12 +97,6 @@ import com.google.common.collect.Iterators; public class HBaseMessageMapper extends NonTransactionalMapper implements MessageMapper { private static final int UNLIMITED = -1; - private static final Function<MailboxMessage, MessageUid> TO_UID = new Function<MailboxMessage, MessageUid>() { - @Override - public MessageUid apply(MailboxMessage mailboxMessage) { - return mailboxMessage.getUid(); - } - }; private final Configuration conf; private final MailboxSession mailboxSession; @@ -133,7 +126,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag @Override public Iterator<MessageUid> listAllMessageUids(final Mailbox mailbox) throws MailboxException { - return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Full, UNLIMITED), TO_UID); + return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Full, UNLIMITED), MailboxMessage::getUid); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java index 42f1835..a69a9b8 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java @@ -103,15 +103,11 @@ public final class HBaseClusterSingleton { } finally { if (hbaseCluster != null) { // add a shutdown hook for shuting down the minicluster. - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { - - @Override - public void run() { - try { - hbaseCluster.shutdown(); - } catch (IOException e) { - throw new RuntimeException("Exception shuting down cluster."); - } + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + try { + hbaseCluster.shutdown(); + } catch (IOException e) { + throw new RuntimeException("Exception shuting down cluster."); } })); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java index 9aba4c6..84a78c6 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java @@ -26,9 +26,6 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.NoResultException; import javax.persistence.PersistenceException; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.base.Throwables; import org.apache.james.mailbox.jpa.JPAId; import org.apache.james.mailbox.jpa.JPATransactionalMapper; import org.apache.james.mailbox.jpa.mail.model.JPAMailboxAnnotation; @@ -41,7 +38,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.base.Function; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; @@ -51,12 +51,8 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot private static final Logger LOGGER = LoggerFactory.getLogger(JPAAnnotationMapper.class); - public static final Function<JPAMailboxAnnotation, MailboxAnnotation> READ_ROW = new Function<JPAMailboxAnnotation, MailboxAnnotation>() { - @Override - public MailboxAnnotation apply(JPAMailboxAnnotation input) { - return MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue()); - } - }; + public static final Function<JPAMailboxAnnotation, MailboxAnnotation> READ_ROW = + input -> MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue()); public JPAAnnotationMapper(EntityManagerFactory entityManagerFactory) { super(entityManagerFactory); @@ -74,17 +70,13 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot public List<MailboxAnnotation> getAnnotationsByKeys(MailboxId mailboxId, Set<MailboxAnnotationKey> keys) { try { final JPAId jpaId = (JPAId) mailboxId; - return ImmutableList.copyOf(Iterables.transform(keys, new Function<MailboxAnnotationKey, MailboxAnnotation>() { - @Override - public MailboxAnnotation apply(MailboxAnnotationKey input) { - return READ_ROW.apply( - getEntityManager() - .createNamedQuery("retrieveByKey", JPAMailboxAnnotation.class) - .setParameter("idParam", jpaId.getRawId()) - .setParameter("keyParam", input.asString()) - .getSingleResult()); - } - })); + return ImmutableList.copyOf(Iterables.transform(keys, + input -> READ_ROW.apply( + getEntityManager() + .createNamedQuery("retrieveByKey", JPAMailboxAnnotation.class) + .setParameter("idParam", jpaId.getRawId()) + .setParameter("keyParam", input.asString()) + .getSingleResult()))); } catch (NoResultException e) { return ImmutableList.of(); } @@ -94,54 +86,32 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot public List<MailboxAnnotation> getAnnotationsByKeysWithOneDepth(MailboxId mailboxId, Set<MailboxAnnotationKey> keys) { return getFilteredLikes((JPAId) mailboxId, keys, - new Function<MailboxAnnotationKey, Predicate<MailboxAnnotation>>() { - @Override - public Predicate<MailboxAnnotation> apply(final MailboxAnnotationKey key) { - return new Predicate<MailboxAnnotation>() { - @Override - public boolean apply(MailboxAnnotation input) { - return key.isParentOrIsEqual(input.getKey()); - } - }; - } - }); + key -> + annotation -> + key.isParentOrIsEqual(annotation.getKey())); } @Override public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxId mailboxId, Set<MailboxAnnotationKey> keys) { return getFilteredLikes((JPAId) mailboxId, keys, - new Function<MailboxAnnotationKey, Predicate<MailboxAnnotation>>() { - @Override - public Predicate<MailboxAnnotation> apply(final MailboxAnnotationKey key) { - return new Predicate<MailboxAnnotation>() { - @Override - public boolean apply(MailboxAnnotation input) { - return key.isAncestorOrIsEqual(input.getKey()); - } - }; - } - }); + key -> + annotation -> key.isAncestorOrIsEqual(annotation.getKey())); } private List<MailboxAnnotation> getFilteredLikes(final JPAId jpaId, Set<MailboxAnnotationKey> keys, final Function<MailboxAnnotationKey, Predicate<MailboxAnnotation>> predicateFunction) { try { return flatMapToList(Iterables.transform(keys, - new Function<MailboxAnnotationKey, List<MailboxAnnotation>>() { - @Override - public List<MailboxAnnotation> apply(final MailboxAnnotationKey key) { - return ImmutableList.copyOf( - Iterables.filter( - Iterables.transform( - getEntityManager() - .createNamedQuery("retrieveByKeyLike", JPAMailboxAnnotation.class) - .setParameter("idParam", jpaId.getRawId()) - .setParameter("keyParam", key.asString() + '%') - .getResultList(), - READ_ROW), - predicateFunction.apply(key))); - } - })); + key -> ImmutableList.copyOf( + Iterables.filter( + Iterables.transform( + getEntityManager() + .createNamedQuery("retrieveByKeyLike", JPAMailboxAnnotation.class) + .setParameter("idParam", jpaId.getRawId()) + .setParameter("keyParam", key.asString() + '%') + .getResultList(), + READ_ROW), + predicateFunction.apply(key))))); } catch (NoResultException e) { return ImmutableList.of(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java index b2d8c2a..3cf6cf3 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java @@ -66,12 +66,6 @@ import com.google.common.collect.Iterators; public class JPAMessageMapper extends JPATransactionalMapper implements MessageMapper { private static final int UNLIMIT_MAX_SIZE = -1; private static final int UNLIMITED = -1; - private static final Function<MailboxMessage, MessageUid> TO_UID = new Function<MailboxMessage, MessageUid>() { - @Override - public MessageUid apply(MailboxMessage mailboxMessage) { - return mailboxMessage.getUid(); - } - }; private final MessageUtils messageMetadataMapper; @@ -90,7 +84,7 @@ public class JPAMessageMapper extends JPATransactionalMapper implements MessageM @Override public Iterator<MessageUid> listAllMessageUids(final Mailbox mailbox) throws MailboxException { - return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Full, UNLIMITED), TO_UID); + return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Full, UNLIMITED), MailboxMessage::getUid); } /** http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java index 36ea643..6e8ba66 100644 --- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java +++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java @@ -49,12 +49,7 @@ public class TransactionalMailboxMapper implements MailboxMapper { @Override public MailboxId save(final Mailbox mailbox) throws MailboxException { - return wrapped.execute(new Transaction<MailboxId>() { - @Override - public MailboxId run() throws MailboxException { - return wrapped.save(mailbox); - } - }); + return wrapped.execute(() -> wrapped.save(mailbox)); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java index ab234c9..8b57d05 100644 --- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java +++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java @@ -77,12 +77,8 @@ public class TransactionalMessageMapper implements MessageMapper { @Override public Map<MessageUid, MessageMetaData> expungeMarkedForDeletionInMailbox(final Mailbox mailbox, final MessageRange set) throws MailboxException { - Map<MessageUid, MessageMetaData> data = messageMapper.execute(new Transaction<Map<MessageUid, MessageMetaData>>() { - @Override - public Map<MessageUid, MessageMetaData> run() throws MailboxException { - return messageMapper.expungeMarkedForDeletionInMailbox(mailbox, set); - } - }); + Map<MessageUid, MessageMetaData> data = messageMapper.execute( + () -> messageMapper.expungeMarkedForDeletionInMailbox(mailbox, set)); return data; } @@ -118,35 +114,23 @@ public class TransactionalMessageMapper implements MessageMapper { @Override public MessageMetaData add(final Mailbox mailbox, final MailboxMessage message) throws MailboxException { - MessageMetaData data = messageMapper.execute(new Transaction<MessageMetaData>() { - @Override - public MessageMetaData run() throws MailboxException { - return messageMapper.add(mailbox, message); - } - }); + MessageMetaData data = messageMapper.execute( + () -> messageMapper.add(mailbox, message)); return data; } @Override public Iterator<UpdatedFlags> updateFlags(final Mailbox mailbox, final FlagsUpdateCalculator flagsUpdateCalculator, final MessageRange set) throws MailboxException { - Iterator<UpdatedFlags> data = messageMapper.execute(new Transaction<Iterator<UpdatedFlags>>() { - @Override - public Iterator<UpdatedFlags> run() throws MailboxException { - return messageMapper.updateFlags(mailbox, flagsUpdateCalculator, set); - } - }); + Iterator<UpdatedFlags> data = messageMapper.execute( + () -> messageMapper.updateFlags(mailbox, flagsUpdateCalculator, set)); return data; } @Override public MessageMetaData copy(final Mailbox mailbox, final MailboxMessage original) throws MailboxException { - MessageMetaData data = messageMapper.execute(new Transaction<MessageMetaData>() { - @Override - public MessageMetaData run() throws MailboxException { - return messageMapper.copy(mailbox, original); - } - }); + MessageMetaData data = messageMapper.execute( + () -> messageMapper.copy(mailbox, original)); return data; } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java index e2c0f57..50c4ad3 100644 --- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java +++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java @@ -120,7 +120,6 @@ import org.apache.lucene.store.LockObtainFailedException; import org.apache.lucene.util.IOUtils; import org.apache.lucene.util.Version; -import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.FluentIterable; @@ -465,12 +464,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex { .build(); return FluentIterable.from(searchMultimap(multimailboxesSearchQuery, session)) - .transform(new Function<SearchResult, MessageUid>() { - @Override - public MessageUid apply(SearchResult input) { - return input.getMessageUid(); - } - }) + .transform(SearchResult::getMessageUid) .iterator(); } @@ -478,12 +472,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex { public List<MessageId> search(MailboxSession session, MultimailboxesSearchQuery searchQuery, long limit) throws MailboxException { Preconditions.checkArgument(session != null, "'session' is mandatory"); return FluentIterable.from(searchMultimap(searchQuery, session)) - .transform(new Function<SearchResult, MessageId>() { - @Override - public MessageId apply(SearchResult input) { - return input.getMessageId().get(); - } - }) + .transform(searchResult -> searchResult.getMessageId().get()) .filter(SearchUtil.distinct()) .limit(Long.valueOf(limit).intValue()) .toList(); http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java index 12e0d4c..03c0639 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java @@ -54,7 +54,6 @@ import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.SimpleMailboxACL; -import com.google.common.base.Function; import com.google.common.base.Optional; public class MaildirFolder { @@ -188,11 +187,7 @@ public class MaildirFolder { * Returns the nextUid value and increases it. */ private MessageUid getNextUid() { - MessageUid nextUid = lastUid.transform(new Function<MessageUid, MessageUid>() { - @Override - public MessageUid apply(MessageUid input) { - return input.next(); - }}).or(MessageUid.MIN_VALUE); + MessageUid nextUid = lastUid.transform(MessageUid::next).or(MessageUid.MIN_VALUE); lastUid = Optional.of(nextUid); return nextUid; } @@ -223,28 +218,25 @@ public class MaildirFolder { * @throws MailboxException if there are problems with the uidList file */ private void readLastUid(MailboxSession session) throws MailboxException { - locker.executeWithLock(session, path, new LockAwareExecution<Void>() { - - @Override - public Void execute() throws MailboxException { - File uidList = uidFile; - FileReader fileReader = null; - BufferedReader reader = null; - try { - if (!uidList.exists()) - createUidFile(); - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - String line = reader.readLine(); - if (line != null) - readUidListHeader(line); - return null; - } catch (IOException e) { - throw new MailboxException("Unable to read last uid", e); - } finally { - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); - } + locker.executeWithLock(session, path, + (LockAwareExecution<Void>) () -> { + File uidList = uidFile; + FileReader fileReader = null; + BufferedReader reader = null; + try { + if (!uidList.exists()) + createUidFile(); + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + String line = reader.readLine(); + if (line != null) + readUidListHeader(line); + return null; + } catch (IOException e) { + throw new MailboxException("Unable to read last uid", e); + } finally { + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); } }, true); @@ -337,42 +329,38 @@ public class MaildirFolder { */ public MaildirMessageName getMessageNameByUid(final MailboxSession session, final MessageUid uid) throws MailboxException { - return locker.executeWithLock(session, path, new LockAwareExecution<MaildirMessageName>() { - - @Override - public MaildirMessageName execute() throws MailboxException { - FileReader fileReader = null; - BufferedReader reader = null; - File uidList = uidFile; - try { - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - String uidString = String.valueOf(uid.asLong()); - String line = reader.readLine(); // the header - int lineNumber = 1; - while ((line = reader.readLine()) != null) { - if (!line.equals("")) { - int gap = line.indexOf(" "); - if (gap == -1) { - // there must be some issues in the file if no gap can be found - session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lineNumber++); - continue; - } - - if (line.substring(0, gap).equals(uidString)) { - return newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1)); - } + return locker.executeWithLock(session, path, () -> { + FileReader fileReader = null; + BufferedReader reader = null; + File uidList = uidFile; + try { + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + String uidString = String.valueOf(uid.asLong()); + String line = reader.readLine(); // the header + int lineNumber = 1; + while ((line = reader.readLine()) != null) { + if (!line.equals("")) { + int gap = line.indexOf(" "); + if (gap == -1) { + // there must be some issues in the file if no gap can be found + session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lineNumber++); + continue; + } + + if (line.substring(0, gap).equals(uidString)) { + return newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1)); } } - - // TODO: Is this right!? - return null; - } catch (IOException e) { - throw new MailboxException("Unable to read messagename for uid " + uid, e); - } finally { - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); - } + } + + // TODO: Is this right!? + return null; + } catch (IOException e) { + throw new MailboxException("Unable to read messagename for uid " + uid, e); + } finally { + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); } }, true); } @@ -389,34 +377,30 @@ public class MaildirFolder { */ public SortedMap<MessageUid, MaildirMessageName> getUidMap(final MailboxSession session, final MessageUid from, final MessageUid to) throws MailboxException { - return locker.executeWithLock(session, path, new LockAwareExecution<SortedMap<MessageUid, MaildirMessageName>>() { - - @Override - public SortedMap<MessageUid, MaildirMessageName> execute() throws MailboxException { - final SortedMap<MessageUid, MaildirMessageName> uidMap = new TreeMap<MessageUid, MaildirMessageName>(); + return locker.executeWithLock(session, path, () -> { + final SortedMap<MessageUid, MaildirMessageName> uidMap = new TreeMap<>(); - File uidList = uidFile; + File uidList = uidFile; - if (uidList.isFile()) { - if (isModified()) { - try { - uidMap.putAll(truncateMap(updateUidFile(), from, to)); - } catch (MailboxException e) { - // weird case if someone deleted the uidlist after - // checking its - // existence and before trying to update it. - uidMap.putAll(truncateMap(createUidFile(), from, to)); - } - } else { - // the uidList is up to date - uidMap.putAll(readUidFile(session, from, to)); + if (uidList.isFile()) { + if (isModified()) { + try { + uidMap.putAll(truncateMap(updateUidFile(), from, to)); + } catch (MailboxException e) { + // weird case if someone deleted the uidlist after + // checking its + // existence and before trying to update it. + uidMap.putAll(truncateMap(createUidFile(), from, to)); } } else { - // the uidList does not exist - uidMap.putAll(truncateMap(createUidFile(), from, to)); + // the uidList is up to date + uidMap.putAll(readUidFile(session, from, to)); } - return uidMap; + } else { + // the uidList does not exist + uidMap.putAll(truncateMap(createUidFile(), from, to)); } + return uidMap; }, true); } @@ -471,84 +455,80 @@ public class MaildirFolder { */ public SortedMap<MessageUid, MaildirMessageName> getRecentMessages(final MailboxSession session) throws MailboxException { final String[] recentFiles = getNewFolder().list(); - final LinkedList<String> lines = new LinkedList<String>(); + final LinkedList<String> lines = new LinkedList<>(); final int theLimit = recentFiles.length; - return locker.executeWithLock(session, path, new LockAwareExecution<SortedMap<MessageUid, MaildirMessageName>>() { - - @Override - public SortedMap<MessageUid, MaildirMessageName> execute() throws MailboxException { - final SortedMap<MessageUid, MaildirMessageName> recentMessages = new TreeMap<MessageUid, MaildirMessageName>(); - - File uidList = uidFile; - + return locker.executeWithLock(session, path, () -> { + final SortedMap<MessageUid, MaildirMessageName> recentMessages = new TreeMap<>(); + + File uidList = uidFile; + + try { + if (!uidList.isFile()) { + if (!uidList.createNewFile()) + throw new IOException("Could not create file " + uidList); + String[] curFiles = curFolder.list(); + String[] newFiles = newFolder.list(); + messageCount = curFiles.length + newFiles.length; + String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles); + for (String file : allFiles) + lines.add(String.valueOf(getNextUid().asLong()) + " " + file); + PrintWriter pw = new PrintWriter(uidList); + try { + pw.println(createUidListHeader()); + for (String line : lines) + pw.println(line); + } finally { + IOUtils.closeQuietly(pw); + } + } + else { + FileReader fileReader = null; + BufferedReader reader = null; try { - if (!uidList.isFile()) { - if (!uidList.createNewFile()) - throw new IOException("Could not create file " + uidList); - String[] curFiles = curFolder.list(); - String[] newFiles = newFolder.list(); - messageCount = curFiles.length + newFiles.length; - String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles); - for (String file : allFiles) - lines.add(String.valueOf(getNextUid().asLong()) + " " + file); - PrintWriter pw = new PrintWriter(uidList); - try { - pw.println(createUidListHeader()); - for (String line : lines) - pw.println(line); - } finally { - IOUtils.closeQuietly(pw); - } + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + String line = reader.readLine(); + // the first line in the file contains the next uid and message count + while ((line = reader.readLine()) != null) + lines.add(line); + } finally { + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); } - else { - FileReader fileReader = null; - BufferedReader reader = null; + } + int counter = 0; + String line; + while (counter < theLimit) { + // walk backwards as recent files are supposedly recent try { - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - String line = reader.readLine(); - // the first line in the file contains the next uid and message count - while ((line = reader.readLine()) != null) - lines.add(line); - } finally { - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); - } + line = lines.removeLast(); + } catch (NoSuchElementException e) { + break; // the list is empty } - int counter = 0; - String line; - while (counter < theLimit) { - // walk backwards as recent files are supposedly recent - try { - line = lines.removeLast(); - } catch (NoSuchElementException e) { - break; // the list is empty + if (!line.equals("")) { + int gap = line.indexOf(" "); + if (gap == -1) { + // there must be some issues in the file if no gap can be found + // there must be some issues in the file if no gap can be found + session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lines.size()); + continue; } - if (!line.equals("")) { - int gap = line.indexOf(" "); - if (gap == -1) { - // there must be some issues in the file if no gap can be found - // there must be some issues in the file if no gap can be found - session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lines.size()); - continue; - } - - MessageUid uid = MessageUid.of(Long.valueOf(line.substring(0, gap))); - String name = line.substring(gap + 1, line.length()); - for (String recentFile : recentFiles) { - if (recentFile.equals(name)) { - recentMessages.put(uid, newMaildirMessageName(MaildirFolder.this, recentFile)); - counter++; - break; - } + + MessageUid uid = MessageUid.of(Long.valueOf(line.substring(0, gap))); + String name = line.substring(gap + 1, line.length()); + for (String recentFile : recentFiles) { + if (recentFile.equals(name)) { + recentMessages.put(uid, newMaildirMessageName(MaildirFolder.this, recentFile)); + counter++; + break; } } } - } catch (IOException e) { - throw new MailboxException("Unable to read recent messages", e); - } - return recentMessages; + } + } catch (IOException e) { + throw new MailboxException("Unable to read recent messages", e); } + return recentMessages; }, true); } @@ -726,13 +706,7 @@ public class MaildirFolder { * @return the line which ought to be the header */ private String createUidListHeader() { - Long last = lastUid.transform(new Function<MessageUid, Long>() { - @Override - public Long apply(MessageUid input) { - return input.asLong(); - } - - }).or(0L); + Long last = lastUid.transform(MessageUid::asLong).or(0L); return "1 " + String.valueOf(last) + " " + String.valueOf(messageCount); } @@ -757,67 +731,63 @@ public class MaildirFolder { * @return The uid of the message */ public MessageUid appendMessage(MailboxSession session, final String name) throws MailboxException { - return locker.executeWithLock(session, path, new LockAwareExecution<MessageUid>() { - - @Override - public MessageUid execute() throws MailboxException { - File uidList = uidFile; - MessageUid uid = null; - FileReader fileReader = null; - BufferedReader reader = null; - PrintWriter pw = null; - try { - if (uidList.isFile()) { - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - String line = reader.readLine(); - // the first line in the file contains the next uid and message count - if (line != null) - readUidListHeader(line); - ArrayList<String> lines = new ArrayList<String>(); - while ((line = reader.readLine()) != null) - lines.add(line); - uid = getNextUid(); - lines.add(String.valueOf(uid.asLong()) + " " + name); - messageCount++; - pw = new PrintWriter(uidList); - pw.println(createUidListHeader()); - for (String entry : lines) - pw.println(entry); - } - else { - // create the file - if (!uidList.createNewFile()) - throw new IOException("Could not create file " + uidList); - String[] curFiles = curFolder.list(); - String[] newFiles = newFolder.list(); - messageCount = curFiles.length + newFiles.length; - ArrayList<String> lines = new ArrayList<String>(); - String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles); - for (String file : allFiles) { - MessageUid theUid = getNextUid(); - lines.add(String.valueOf(theUid.asLong()) + " " + file); - // the listed names already include the message to append - if (file.equals(name)) - uid = theUid; - } - pw = new PrintWriter(uidList); - pw.println(createUidListHeader()); - for (String line : lines) - pw.println(line); - } - } catch (IOException e) { - throw new MailboxException("Unable to append msg", e); - } finally { - IOUtils.closeQuietly(pw); - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); + return locker.executeWithLock(session, path, () -> { + File uidList = uidFile; + MessageUid uid = null; + FileReader fileReader = null; + BufferedReader reader = null; + PrintWriter pw = null; + try { + if (uidList.isFile()) { + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + String line = reader.readLine(); + // the first line in the file contains the next uid and message count + if (line != null) + readUidListHeader(line); + ArrayList<String> lines = new ArrayList<String>(); + while ((line = reader.readLine()) != null) + lines.add(line); + uid = getNextUid(); + lines.add(String.valueOf(uid.asLong()) + " " + name); + messageCount++; + pw = new PrintWriter(uidList); + pw.println(createUidListHeader()); + for (String entry : lines) + pw.println(entry); } - if (uid == null) { - throw new MailboxException("Unable to append msg"); - } else { - return uid; + else { + // create the file + if (!uidList.createNewFile()) + throw new IOException("Could not create file " + uidList); + String[] curFiles = curFolder.list(); + String[] newFiles = newFolder.list(); + messageCount = curFiles.length + newFiles.length; + ArrayList<String> lines = new ArrayList<String>(); + String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles); + for (String file : allFiles) { + MessageUid theUid = getNextUid(); + lines.add(String.valueOf(theUid.asLong()) + " " + file); + // the listed names already include the message to append + if (file.equals(name)) + uid = theUid; + } + pw = new PrintWriter(uidList); + pw.println(createUidListHeader()); + for (String line : lines) + pw.println(line); } + } catch (IOException e) { + throw new MailboxException("Unable to append msg", e); + } finally { + IOUtils.closeQuietly(pw); + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); + } + if (uid == null) { + throw new MailboxException("Unable to append msg"); + } else { + return uid; } }, true); @@ -831,39 +801,35 @@ public class MaildirFolder { * @throws MailboxException */ public void update(MailboxSession session, final MessageUid uid, final String messageName) throws MailboxException { - locker.executeWithLock(session, path, new LockAwareExecution<Void>() { - - @Override - public Void execute() throws MailboxException { - File uidList = uidFile; - FileReader fileReader = null; - BufferedReader reader = null; - PrintWriter writer = null; - try { - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - String line = reader.readLine(); - readUidListHeader(line); - ArrayList<String> lines = new ArrayList<String>(); - while ((line = reader.readLine()) != null) { - if (uid.equals(MessageUid.of(Long.valueOf(line.substring(0, line.indexOf(" ")))))) { - line = String.valueOf(uid.asLong()) + " " + messageName; - } - lines.add(line); + locker.executeWithLock(session, path, (LockAwareExecution<Void>) () -> { + File uidList = uidFile; + FileReader fileReader = null; + BufferedReader reader = null; + PrintWriter writer = null; + try { + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + String line = reader.readLine(); + readUidListHeader(line); + ArrayList<String> lines = new ArrayList<String>(); + while ((line = reader.readLine()) != null) { + if (uid.equals(MessageUid.of(Long.valueOf(line.substring(0, line.indexOf(" ")))))) { + line = String.valueOf(uid.asLong()) + " " + messageName; } - writer = new PrintWriter(uidList); - writer.println(createUidListHeader()); - for (String entry : lines) - writer.println(entry); - } catch (IOException e) { - throw new MailboxException("Unable to update msg with uid " + uid, e); - } finally { - IOUtils.closeQuietly(writer); - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); - } - return null; + lines.add(line); + } + writer = new PrintWriter(uidList); + writer.println(createUidListHeader()); + for (String entry : lines) + writer.println(entry); + } catch (IOException e) { + throw new MailboxException("Unable to update msg with uid " + uid, e); + } finally { + IOUtils.closeQuietly(writer); + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); } + return null; }, true); } @@ -876,56 +842,52 @@ public class MaildirFolder { * @throws MailboxException If the file cannot be deleted of there is a problem with the uid list */ public MaildirMessageName delete(final MailboxSession session, final MessageUid uid) throws MailboxException { - return locker.executeWithLock(session, path, new LockAwareExecution<MaildirMessageName>() { - - @Override - public MaildirMessageName execute() throws MailboxException { - File uidList = uidFile; - FileReader fileReader = null; - BufferedReader reader = null; - PrintWriter writer = null; - MaildirMessageName deletedMessage = null; - try { - fileReader = new FileReader(uidList); - reader = new BufferedReader(fileReader); - readUidListHeader(reader.readLine()); - - // It may be possible that message count is 0 so we should better not try to calculate the size of the ArrayList - ArrayList<String> lines = new ArrayList<String>(); - String line; - int lineNumber = 1; - while ((line = reader.readLine()) != null) { - int gap = line.indexOf(" "); - if (gap == -1) { - // there must be some issues in the file if no gap can be found - session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lineNumber++); - continue; - } - - if (uid.equals(MessageUid.of(Long.valueOf(line.substring(0, line.indexOf(" ")))))) { - deletedMessage = newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1, line.length())); - messageCount--; - } - else { - lines.add(line); - } - } - if (deletedMessage != null) { - FileUtils.forceDelete(deletedMessage.getFile()); - writer = new PrintWriter(uidList); - writer.println(createUidListHeader()); - for (String entry : lines) - writer.println(entry); + return locker.executeWithLock(session, path, () -> { + File uidList = uidFile; + FileReader fileReader = null; + BufferedReader reader = null; + PrintWriter writer = null; + MaildirMessageName deletedMessage = null; + try { + fileReader = new FileReader(uidList); + reader = new BufferedReader(fileReader); + readUidListHeader(reader.readLine()); + + // It may be possible that message count is 0 so we should better not try to calculate the size of the ArrayList + ArrayList<String> lines = new ArrayList<String>(); + String line; + int lineNumber = 1; + while ((line = reader.readLine()) != null) { + int gap = line.indexOf(" "); + if (gap == -1) { + // there must be some issues in the file if no gap can be found + session.getLog().info("Corrupted entry in uid-file " + uidList + " line " + lineNumber++); + continue; } - return deletedMessage; - } catch (IOException e) { - throw new MailboxException("Unable to delete msg with uid " + uid, e); - } finally { - IOUtils.closeQuietly(writer); - IOUtils.closeQuietly(reader); - IOUtils.closeQuietly(fileReader); - } + if (uid.equals(MessageUid.of(Long.valueOf(line.substring(0, line.indexOf(" ")))))) { + deletedMessage = newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1, line.length())); + messageCount--; + } + else { + lines.add(line); + } + } + if (deletedMessage != null) { + FileUtils.forceDelete(deletedMessage.getFile()); + writer = new PrintWriter(uidList); + writer.println(createUidListHeader()); + for (String entry : lines) + writer.println(entry); + } + return deletedMessage; + + } catch (IOException e) { + throw new MailboxException("Unable to delete msg with uid " + uid, e); + } finally { + IOUtils.closeQuietly(writer); + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(fileReader); } }, true); @@ -955,30 +917,26 @@ public class MaildirFolder { */ private MailboxACL readACL(MailboxSession session) throws MailboxException { // FIXME Do we need this locking? - return locker.executeWithLock(session, path, new LockAwareExecution<MailboxACL>() { - - @Override - public MailboxACL execute() throws MailboxException { - File f = aclFile; - InputStream in = null; - Properties props = new Properties(); - if (f.exists()) { - try { - in = new FileInputStream(f); - props.load(in); - } catch (FileNotFoundException e) { - throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); - } catch (IOException e) { - throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); - } - finally { - IOUtils.closeQuietly(in); - } + return locker.executeWithLock(session, path, (LockAwareExecution<MailboxACL>) () -> { + File f = aclFile; + InputStream in = null; + Properties props = new Properties(); + if (f.exists()) { + try { + in = new FileInputStream(f); + props.load(in); + } catch (FileNotFoundException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } catch (IOException e) { + throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e); + } + finally { + IOUtils.closeQuietly(in); } - - return new SimpleMailboxACL(props); - } + + return new SimpleMailboxACL(props); + }, true); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java index 8865e8b..6446dba 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java @@ -453,12 +453,9 @@ public class MaildirMessageName { } public static FilenameFilter createRegexFilter(final Pattern pattern) { - return new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - Matcher matcher = pattern.matcher(name); - return matcher.matches(); - } + return (dir, name) -> { + Matcher matcher = pattern.matcher(name); + return matcher.matches(); }; } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java index bbb9244..bdc0c15 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java @@ -37,7 +37,6 @@ import org.apache.james.mailbox.store.mail.UidProvider; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; -import com.google.common.base.Function; import com.google.common.base.Optional; public class MaildirStore implements UidProvider, ModSeqProvider { @@ -246,12 +245,9 @@ public class MaildirStore implements UidProvider, ModSeqProvider { @Override public MessageUid nextUid(MailboxSession session, Mailbox mailbox) throws MailboxException { try { - return createMaildirFolder(mailbox).getLastUid(session).transform(new Function<MessageUid, MessageUid>() { - @Override - public MessageUid apply(MessageUid input) { - return input.next(); - } - }).or(MessageUid.MIN_VALUE); + return createMaildirFolder(mailbox).getLastUid(session) + .transform(MessageUid::next) + .or(MessageUid.MIN_VALUE); } catch (MailboxException e) { throw new MailboxException("Unable to generate next uid", e); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java index 5661b91..b7f5d9e 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java @@ -19,7 +19,6 @@ package org.apache.james.mailbox.maildir.mail; import java.io.File; -import java.io.FileFilter; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; @@ -317,12 +316,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail // List all INBOX sub folders. - File[] mailboxes = user.listFiles(new FileFilter() { - @Override - public boolean accept(File pathname) { - return pathname.getName().startsWith("."); - } - }); + File[] mailboxes = user.listFiles(pathname -> pathname.getName().startsWith(".")); for (File mailbox: mailboxes) { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java index 4de6ba9..896ebb9 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java @@ -124,16 +124,8 @@ public class InMemoryMessageIdManager implements MessageIdManager { private List<MailboxId> getUsersMailboxIds(final MailboxSession mailboxSession) throws MailboxException { return FluentIterable.from(mailboxManager.search(userMailboxes(mailboxSession), mailboxSession)) - .transform(getMailboxIdFromMetadata()).toList(); - } - - private Function<MailboxMetaData, MailboxId> getMailboxIdFromMetadata() { - return new Function<MailboxMetaData, MailboxId>() { - @Override - public MailboxId apply(MailboxMetaData input) { - return input.getId(); - } - }; + .transform(MailboxMetaData::getId) + .toList(); } private MailboxQuery userMailboxes(MailboxSession mailboxSession) { @@ -165,26 +157,19 @@ public class InMemoryMessageIdManager implements MessageIdManager { } private Predicate<MailboxId> findMailboxBelongsToAnotherSession(final MailboxSession mailboxSession) { - return new Predicate<MailboxId>() { - @Override - public boolean apply(MailboxId input) { - try { - MailboxPath currentMailbox = mailboxManager.getMailbox(input, mailboxSession).getMailboxPath(); - return !mailboxSession.getUser().isSameUser(currentMailbox.getUser()); - } catch (MailboxException e) { - return true; - } + return input -> { + try { + MailboxPath currentMailbox = mailboxManager.getMailbox(input, mailboxSession).getMailboxPath(); + return !mailboxSession.getUser().isSameUser(currentMailbox.getUser()); + } catch (MailboxException e) { + return true; } }; } private FluentIterable<MailboxId> currentMailboxes(List<MessageResult> messages) { - return FluentIterable.from(messages).transform(new Function<MessageResult, MailboxId>() { - @Override - public MailboxId apply(MessageResult message) { - return message.getMailboxId(); - } - }); + return FluentIterable.from(messages) + .transform(MessageResult::getMailboxId); } private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { @@ -194,13 +179,7 @@ public class InMemoryMessageIdManager implements MessageIdManager { } private Predicate<MessageResult> filterByMessageId(final MessageId messageId) { - return new Predicate<MessageResult>() { - - @Override - public boolean apply(MessageResult messageResult) { - return messageResult.getMessageId().equals(messageId); - } - }; + return messageResult -> messageResult.getMessageId().equals(messageId); } private ImmutableList<MessageResult> retrieveAllMessages(MailboxId mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java index 3325f9d..514578e 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java @@ -20,8 +20,6 @@ package org.apache.james.mailbox.inmemory.mail; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -34,7 +32,6 @@ import org.apache.james.mailbox.model.MailboxAnnotationKey; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.store.mail.AnnotationMapper; -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.collect.HashBasedTable; @@ -65,12 +62,7 @@ public class InMemoryAnnotationMapper implements AnnotationMapper { try { return Iterables.transform( mailboxesAnnotations.row(mailboxId).entrySet(), - new Function<Map.Entry<String, String>, MailboxAnnotation>() { - @Override - public MailboxAnnotation apply(Entry<String, String> input) { - return MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue()); - } - }); + input -> MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue())); } finally { lock.readLock().unlock(); } @@ -85,12 +77,7 @@ public class InMemoryAnnotationMapper implements AnnotationMapper { public List<MailboxAnnotation> getAnnotationsByKeys(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) { return ImmutableList.copyOf( Iterables.filter(retrieveAllAnnotations((InMemoryId)mailboxId), - new Predicate<MailboxAnnotation>() { - @Override - public boolean apply(MailboxAnnotation input) { - return keys.contains(input.getKey()); - } - })); + input -> keys.contains(input.getKey()))); } @Override @@ -104,39 +91,19 @@ public class InMemoryAnnotationMapper implements AnnotationMapper { } private Predicate<MailboxAnnotation> getPredicateFilterByAll(final Set<MailboxAnnotationKey> keys) { - return new Predicate<MailboxAnnotation>() { - @Override - public boolean apply(final MailboxAnnotation input) { - return Iterables.tryFind(keys, filterAnnotationsByPrefix(input)).isPresent(); - } - }; + return input -> Iterables.tryFind(keys, filterAnnotationsByPrefix(input)).isPresent(); } private Predicate<MailboxAnnotation> getPredicateFilterByOne(final Set<MailboxAnnotationKey> keys) { - return new Predicate<MailboxAnnotation>() { - @Override - public boolean apply(final MailboxAnnotation input) { - return Iterables.tryFind(keys, filterAnnotationsByParentKey(input.getKey())).isPresent(); - } - }; + return input -> Iterables.tryFind(keys, filterAnnotationsByParentKey(input.getKey())).isPresent(); } private Predicate<MailboxAnnotationKey> filterAnnotationsByParentKey(final MailboxAnnotationKey input) { - return new Predicate<MailboxAnnotationKey>() { - @Override - public boolean apply(MailboxAnnotationKey key) { - return input.countComponents() <= (key.countComponents() + 1); - } - }; + return key -> input.countComponents() <= (key.countComponents() + 1); } private Predicate<MailboxAnnotationKey> filterAnnotationsByPrefix(final MailboxAnnotation input) { - return new Predicate<MailboxAnnotationKey>() { - @Override - public boolean apply(MailboxAnnotationKey key) { - return key.equals(input.getKey()) || StringUtils.startsWith(input.getKey().asString(), key.asString() + "/"); - } - }; + return key -> key.equals(input.getKey()) || StringUtils.startsWith(input.getKey().asString(), key.asString() + "/"); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java index 1bd6068..5e823ef 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java @@ -39,7 +39,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; import com.google.common.base.Charsets; import com.google.common.base.Optional; -import com.google.common.base.Predicate; import com.google.common.base.Throwables; import com.google.common.collect.FluentIterable; @@ -99,13 +98,7 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException { MailboxQuery userMailboxesQuery = MailboxQuery.builder(mailboxSession).expression("*").build(); return FluentIterable.from(mailboxManager.search(userMailboxesQuery, mailboxSession)) - .filter(new Predicate<MailboxMetaData>() { - - @Override - public boolean apply(MailboxMetaData mailboxMetaData) { - return mailboxMetaData.getId().equals(mailboxId); - } - }) + .filter(mailboxMetaData -> mailboxMetaData.getId().equals(mailboxId)) .first(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java index 524ee1e..9a82bc7 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java @@ -29,8 +29,6 @@ import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator; import org.apache.james.mailbox.store.quota.QuotaRootImpl; import org.junit.Before; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; public class InMemoryCurrentQuotaManagerTest { @@ -48,35 +46,27 @@ public class InMemoryCurrentQuotaManagerTest { @Test public void getCurrentMessageCountShouldReturnRecalculateMessageCountWhenEntryIsNotInitialized() throws Exception { - when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)).thenAnswer(new Answer<CurrentQuotaCalculator.CurrentQuotas>() { - @Override - public CurrentQuotaCalculator.CurrentQuotas answer(InvocationOnMock invocationOnMock) throws Throwable { - return new CurrentQuotaCalculator.CurrentQuotas(18, 512); - } - }); + when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) + .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); + assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(18); } @Test public void getCurrentStorageShouldReturnRecalculateSizeWhenEntryIsNotInitialized() throws Exception { - when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)).thenAnswer(new Answer<CurrentQuotaCalculator.CurrentQuotas>() { - @Override - public CurrentQuotaCalculator.CurrentQuotas answer(InvocationOnMock invocationOnMock) throws Throwable { - return new CurrentQuotaCalculator.CurrentQuotas(18, 512); - } - }); + when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) + .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); + assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(512); } @Test public void getCurrentStorageShouldReRetrieveStoredQuotasWhenCalculateOnUnknownQuotaIsTrue() throws Exception { - when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)).thenAnswer(new Answer<CurrentQuotaCalculator.CurrentQuotas>() { - @Override - public CurrentQuotaCalculator.CurrentQuotas answer(InvocationOnMock invocationOnMock) throws Throwable { - return new CurrentQuotaCalculator.CurrentQuotas(18, 512); - } - }); + when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) + .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); + testee.increase(QUOTA_ROOT, 10, 100); + assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(28); assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(612); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org