You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/06/26 03:28:58 UTC
[james-project] 18/28: JAMES-2794 Replace a pair by
MailWithEnqueueId
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 16617ab9ecdff41181c18c71e14f37d58d1b8b9b
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 25 08:28:36 2019 +0700
JAMES-2794 Replace a pair by MailWithEnqueueId
---
.../org/apache/james/queue/rabbitmq/Dequeuer.java | 24 ++++++-------
.../apache/james/queue/rabbitmq/MailLoader.java | 5 ++-
.../james/queue/rabbitmq/MailWithEnqueueId.java | 40 ++++++++++++++++++++++
.../queue/rabbitmq/RabbitMQMailQueueFactory.java | 4 +--
4 files changed, 54 insertions(+), 19 deletions(-)
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
index 01db228..94b803c 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/Dequeuer.java
@@ -25,7 +25,6 @@ import java.io.IOException;
import java.util.function.Consumer;
import java.util.function.Function;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.metrics.api.Metric;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.queue.api.MailQueue;
@@ -50,10 +49,10 @@ class Dequeuer {
private final EnqueueId enqueueId;
private final Mail mail;
- private RabbitMQMailQueueItem(Consumer<Boolean> ack, EnqueueId enqueueId, Mail mail) {
+ private RabbitMQMailQueueItem(Consumer<Boolean> ack, MailWithEnqueueId mailWithEnqueueId) {
this.ack = ack;
- this.enqueueId = enqueueId;
- this.mail = mail;
+ this.enqueueId = mailWithEnqueueId.getEnqueueId();
+ this.mail = mailWithEnqueueId.getMail();
}
@Override
@@ -71,12 +70,12 @@ class Dequeuer {
}
}
- private final Function<MailReferenceDTO, Pair<EnqueueId, Mail>> mailLoader;
+ private final Function<MailReferenceDTO, MailWithEnqueueId> mailLoader;
private final Metric dequeueMetric;
private final MailReferenceSerializer mailReferenceSerializer;
private final MailQueueView mailQueueView;
- Dequeuer(MailQueueName name, RabbitClient rabbitClient, Function<MailReferenceDTO, Pair<EnqueueId, Mail>> mailLoader,
+ Dequeuer(MailQueueName name, RabbitClient rabbitClient, Function<MailReferenceDTO, MailWithEnqueueId> mailLoader,
MailReferenceSerializer serializer, MetricFactory metricFactory,
MailQueueView mailQueueView) {
this.mailLoader = mailLoader;
@@ -108,28 +107,27 @@ class Dequeuer {
private Mono<RabbitMQMailQueueItem> loadItem(AcknowledgableDelivery response) {
try {
- Pair<EnqueueId, Mail> idAndMail = loadMail(response);
- Mail mail = idAndMail.getRight();
- ThrowingConsumer<Boolean> ack = ack(response, mail);
- return Mono.just(new RabbitMQMailQueueItem(ack, idAndMail.getLeft(), mail));
+ MailWithEnqueueId mailWithEnqueueId = loadMail(response);
+ ThrowingConsumer<Boolean> ack = ack(response, mailWithEnqueueId);
+ return Mono.just(new RabbitMQMailQueueItem(ack, mailWithEnqueueId));
} catch (MailQueue.MailQueueException e) {
return Mono.error(e);
}
}
- private ThrowingConsumer<Boolean> ack(AcknowledgableDelivery response, Mail mail) {
+ private ThrowingConsumer<Boolean> ack(AcknowledgableDelivery response, MailWithEnqueueId mailWithEnqueueId) {
return success -> {
if (success) {
dequeueMetric.increment();
response.ack();
- mailQueueView.delete(DeleteCondition.withName(mail.getName()));
+ mailQueueView.delete(DeleteCondition.withName(mailWithEnqueueId.getMail().getName()));
} else {
response.nack(REQUEUE);
}
};
}
- private Pair<EnqueueId, Mail> loadMail(Delivery response) throws MailQueue.MailQueueException {
+ private MailWithEnqueueId loadMail(Delivery response) throws MailQueue.MailQueueException {
MailReferenceDTO mailDTO = toMailReference(response);
return mailLoader.apply(mailDTO);
}
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailLoader.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailLoader.java
index 98fdc5c..a616909 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailLoader.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailLoader.java
@@ -23,7 +23,6 @@ import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.Store;
import org.apache.james.blob.mail.MimeMessagePartsId;
@@ -39,14 +38,14 @@ class MailLoader {
this.blobIdFactory = blobIdFactory;
}
- Pair<EnqueueId, Mail> load(MailReferenceDTO dto) throws MailQueue.MailQueueException {
+ MailWithEnqueueId load(MailReferenceDTO dto) throws MailQueue.MailQueueException {
try {
MailReference mailReference = dto.toMailReference(blobIdFactory);
Mail mail = mailReference.getMail();
MimeMessage mimeMessage = mimeMessageStore.read(mailReference.getPartsId()).block();
mail.setMessage(mimeMessage);
- return Pair.of(mailReference.getEnqueueId(), mail);
+ return new MailWithEnqueueId(mailReference.getEnqueueId(), mail);
} catch (AddressException e) {
throw new MailQueue.MailQueueException("Failed to parse mail address", e);
} catch (MessagingException e) {
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailWithEnqueueId.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailWithEnqueueId.java
new file mode 100644
index 0000000..f256fbf
--- /dev/null
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailWithEnqueueId.java
@@ -0,0 +1,40 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.queue.rabbitmq;
+
+import org.apache.mailet.Mail;
+
+public class MailWithEnqueueId {
+ private final EnqueueId enqueueId;
+ private final Mail mail;
+
+ MailWithEnqueueId(EnqueueId enqueueId, Mail mail) {
+ this.enqueueId = enqueueId;
+ this.mail = mail;
+ }
+
+ public EnqueueId getEnqueueId() {
+ return enqueueId;
+ }
+
+ public Mail getMail() {
+ return mail;
+ }
+}
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
index fdf24a1..adaf3de 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
@@ -30,7 +30,6 @@ import java.util.function.Function;
import javax.inject.Inject;
import javax.mail.internet.MimeMessage;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.Store;
import org.apache.james.blob.mail.MimeMessagePartsId;
@@ -40,7 +39,6 @@ import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.queue.api.MailQueueFactory;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
-import org.apache.mailet.Mail;
import com.github.fge.lambdas.Throwing;
import com.google.common.annotations.VisibleForTesting;
@@ -54,7 +52,7 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
private final RabbitClient rabbitClient;
private final Store<MimeMessage, MimeMessagePartsId> mimeMessageStore;
private final MailReferenceSerializer mailReferenceSerializer;
- private final Function<MailReferenceDTO, Pair<EnqueueId, Mail>> mailLoader;
+ private final Function<MailReferenceDTO, MailWithEnqueueId> mailLoader;
private final MailQueueView.Factory mailQueueViewFactory;
private final Clock clock;
private final MailQueueItemDecoratorFactory decoratorFactory;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org