JAMES-2134 Builder for Gateway
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/93352f62 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/93352f62 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/93352f62 Branch: refs/heads/master Commit: 93352f62f27954daa07f8d2bb369731c88a81eeb Parents: b7ea0fe Author: Raphael Ouazana <[email protected]> Authored: Tue Apr 3 16:48:31 2018 +0200 Committer: Raphael Ouazana <[email protected]> Committed: Thu Apr 5 14:48:41 2018 +0200 ---------------------------------------------------------------------- .../java/org/apache/james/mdn/MDNReport.java | 10 ----- .../org/apache/james/mdn/fields/Gateway.java | 39 ++++++++++++++++---- .../james/mdn/MDNReportFormattingTest.java | 6 +-- .../org/apache/james/mdn/MDNReportTest.java | 2 +- .../apache/james/mdn/fields/GatewayTest.java | 29 +++++++++------ 5 files changed, 52 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/93352f62/mdn/src/main/java/org/apache/james/mdn/MDNReport.java ---------------------------------------------------------------------- diff --git a/mdn/src/main/java/org/apache/james/mdn/MDNReport.java b/mdn/src/main/java/org/apache/james/mdn/MDNReport.java index 82030a1..317d3c5 100644 --- a/mdn/src/main/java/org/apache/james/mdn/MDNReport.java +++ b/mdn/src/main/java/org/apache/james/mdn/MDNReport.java @@ -79,16 +79,6 @@ public class MDNReport { return this; } - public Builder gatewayField(String gatewayDns) { - this.gatewayField = Optional.of(new Gateway(Text.fromRawText(gatewayDns))); - return this; - } - - public Builder gatewayField(Optional<Gateway> gatewayField) { - this.gatewayField = gatewayField; - return this; - } - public Builder gatewayField(Gateway gatewayField) { this.gatewayField = Optional.of(gatewayField); return this; http://git-wip-us.apache.org/repos/asf/james-project/blob/93352f62/mdn/src/main/java/org/apache/james/mdn/fields/Gateway.java ---------------------------------------------------------------------- diff --git a/mdn/src/main/java/org/apache/james/mdn/fields/Gateway.java b/mdn/src/main/java/org/apache/james/mdn/fields/Gateway.java index c988b37..9699fc6 100644 --- a/mdn/src/main/java/org/apache/james/mdn/fields/Gateway.java +++ b/mdn/src/main/java/org/apache/james/mdn/fields/Gateway.java @@ -20,6 +20,7 @@ package org.apache.james.mdn.fields; import java.util.Objects; +import java.util.Optional; import com.google.common.base.Preconditions; @@ -29,21 +30,43 @@ import com.google.common.base.Preconditions; public class Gateway implements Field { public static final String FIELD_NAME = "MDN-Gateway"; + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private Optional<AddressType> nameType; + private Text name; + + private Builder() { + this.nameType = Optional.empty(); + } + + public Builder nameType(AddressType nameType) { + this.nameType = Optional.of(nameType); + return this; + } + + public Builder name(Text name) { + this.name = name; + return this; + } + + public Gateway build() { + Preconditions.checkNotNull(name); + + return new Gateway(nameType.orElse(AddressType.DNS), name); + } + } + private final AddressType nameType; private final Text name; - public Gateway(AddressType nameType, Text name) { - Preconditions.checkNotNull(nameType); - Preconditions.checkNotNull(name); - + private Gateway(AddressType nameType, Text name) { this.nameType = nameType; this.name = name; } - public Gateway(Text name) { - this(AddressType.DNS, name); - } - @Override public String formattedValue() { return FIELD_NAME + ": " + nameType.getType() + ";" + name.formatted(); http://git-wip-us.apache.org/repos/asf/james-project/blob/93352f62/mdn/src/test/java/org/apache/james/mdn/MDNReportFormattingTest.java ---------------------------------------------------------------------- diff --git a/mdn/src/test/java/org/apache/james/mdn/MDNReportFormattingTest.java b/mdn/src/test/java/org/apache/james/mdn/MDNReportFormattingTest.java index 8ccf42f..011108b 100644 --- a/mdn/src/test/java/org/apache/james/mdn/MDNReportFormattingTest.java +++ b/mdn/src/test/java/org/apache/james/mdn/MDNReportFormattingTest.java @@ -367,7 +367,7 @@ public class MDNReportFormattingTest { String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) - .gatewayField(new Gateway(Text.fromRawText("host.com"))) + .gatewayField(Gateway.builder().name(Text.fromRawText("host.com")).build()) .finalRecipientField(new FinalRecipient(Text.fromRawText("final_recipient"))) .originalRecipientField(new OriginalRecipient(Text.fromRawText("originalRecipient"))) .originalMessageIdField(new OriginalMessageId("original_message_id")) @@ -396,7 +396,7 @@ public class MDNReportFormattingTest { String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) - .gatewayField(new Gateway(new AddressType("postal"), Text.fromRawText("5 rue Charles mercier"))) + .gatewayField(Gateway.builder().nameType(new AddressType("postal")).name(Text.fromRawText("5 rue Charles mercier")).build()) .finalRecipientField(new FinalRecipient(Text.fromRawText("final_recipient"))) .originalRecipientField(new OriginalRecipient(Text.fromRawText("originalRecipient"))) .originalMessageIdField(new OriginalMessageId("original_message_id")) @@ -452,7 +452,7 @@ public class MDNReportFormattingTest { String report = MDNReport.builder() .reportingUserAgentField(ReportingUserAgent.builder().userAgentName("UA_name").userAgentProduct("UA_product").build()) - .gatewayField(new Gateway(new AddressType("postal"), Text.fromRawText("8 rue Charles mercier\n 36555 Saint Coincoin\n France"))) + .gatewayField(Gateway.builder().nameType(new AddressType("postal")).name(Text.fromRawText("8 rue Charles mercier\n 36555 Saint Coincoin\n France")).build()) .finalRecipientField(new FinalRecipient(new AddressType("postal"), Text.fromRawText("5 rue Mercier\n 36555 Saint Coincoin\n France"))) .originalRecipientField(new OriginalRecipient(new AddressType("postal"), Text.fromRawText("3 rue Mercier\n 36555 Saint Coincoin\n France"))) .originalMessageIdField(new OriginalMessageId("original_message_id")) http://git-wip-us.apache.org/repos/asf/james-project/blob/93352f62/mdn/src/test/java/org/apache/james/mdn/MDNReportTest.java ---------------------------------------------------------------------- diff --git a/mdn/src/test/java/org/apache/james/mdn/MDNReportTest.java b/mdn/src/test/java/org/apache/james/mdn/MDNReportTest.java index 6ee9d7e..b378522 100644 --- a/mdn/src/test/java/org/apache/james/mdn/MDNReportTest.java +++ b/mdn/src/test/java/org/apache/james/mdn/MDNReportTest.java @@ -117,7 +117,7 @@ public class MDNReportTest { FinalRecipient finalRecipientField = new FinalRecipient(Text.fromRawText("[email protected]")); ExtensionField extensionField1 = new ExtensionField("name1", "value1"); ExtensionField extensionField2 = new ExtensionField("name2", "value2"); - Gateway gateway = new Gateway(Text.fromRawText("address")); + Gateway gateway = Gateway.builder().name(Text.fromRawText("address")).build(); OriginalMessageId originalMessageIdField = new OriginalMessageId("msgId"); OriginalRecipient originalRecipientField = new OriginalRecipient(Text.fromRawText("address")); ReportingUserAgent reportingUserAgentField = ReportingUserAgent.builder().userAgentName("name").build(); http://git-wip-us.apache.org/repos/asf/james-project/blob/93352f62/mdn/src/test/java/org/apache/james/mdn/fields/GatewayTest.java ---------------------------------------------------------------------- diff --git a/mdn/src/test/java/org/apache/james/mdn/fields/GatewayTest.java b/mdn/src/test/java/org/apache/james/mdn/fields/GatewayTest.java index 3d69440..a276d19 100644 --- a/mdn/src/test/java/org/apache/james/mdn/fields/GatewayTest.java +++ b/mdn/src/test/java/org/apache/james/mdn/fields/GatewayTest.java @@ -43,43 +43,48 @@ public class GatewayTest { public void shouldThrowOnNullName() { expectedException.expect(NullPointerException.class); - Text name = null; - new Gateway(name); + Gateway.builder() + .name(null) + .build(); } @Test public void shouldThrowOnNullNameWhenType() { expectedException.expect(NullPointerException.class); - Text name = null; - new Gateway(new AddressType("type"), name); + Gateway.builder() + .nameType(new AddressType("type")) + .name(null) + .build(); } @Test public void shouldThrowOnNullType() { expectedException.expect(NullPointerException.class); - AddressType nameType = null; - new Gateway(nameType, Text.fromRawText("name")); + Gateway.builder() + .nameType(null) + .name(Text.fromRawText("name")) + .build(); } @Test - public void addressTypeSHouldDefaultToDNS() { + public void addressTypeShouldDefaultToDNS() { Text address = Text.fromRawText("address"); - assertThat(new Gateway(address)) - .isEqualTo(new Gateway(AddressType.DNS, address)); + assertThat(Gateway.builder().name(Text.fromRawText("address")).build()) + .isEqualTo(Gateway.builder().nameType(AddressType.DNS).name(address).build()); } @Test public void formattedValueShouldDisplayAddress() { - assertThat(new Gateway(Text.fromRawText("address")) + assertThat(Gateway.builder().name(Text.fromRawText("address")).build() .formattedValue()) .isEqualTo("MDN-Gateway: dns;address"); } @Test public void formattedValueShouldDisplayMultilineAddress() { - assertThat(new Gateway(Text.fromRawText("address\nmultiline")) + assertThat(Gateway.builder().name(Text.fromRawText("address\nmultiline")).build() .formattedValue()) .isEqualTo("MDN-Gateway: dns;address\r\n" + " multiline"); @@ -87,7 +92,7 @@ public class GatewayTest { @Test public void formattedValueShouldDisplayCustomAddress() { - assertThat(new Gateway(new AddressType("custom"), Text.fromRawText("address")) + assertThat(Gateway.builder().nameType(new AddressType("custom")).name(Text.fromRawText("address")).build() .formattedValue()) .isEqualTo("MDN-Gateway: custom;address"); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
