1
0
mirror of https://github.com/google/nomulus synced 2026-01-05 04:56:03 +00:00

Convert a bunch more @AutoValues to records (#2412)

This commit is contained in:
Ben McIlwain
2024-04-25 12:59:31 -04:00
committed by GitHub
parent e7501b621a
commit 55fade497d
36 changed files with 392 additions and 530 deletions

View File

@@ -14,7 +14,7 @@
package google.registry.util;
import com.google.auto.value.AutoValue;
import com.google.auto.value.AutoBuilder;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.net.MediaType;
@@ -23,16 +23,25 @@ import java.util.Optional;
import javax.mail.internet.InternetAddress;
/**
* Value class representing the content and metadata of an email.
* Record representing the content and metadata of an email.
*
* <p>The sender address and display name are set by the email client and are not customizable by
* the user.
*
* @param replyToEmailAddress Optional return email address that overrides the default.
*/
@AutoValue
public abstract class EmailMessage {
public record EmailMessage(
String subject,
String body,
ImmutableSet<InternetAddress> recipients,
Optional<InternetAddress> replyToEmailAddress,
ImmutableSet<InternetAddress> ccs,
ImmutableSet<InternetAddress> bccs,
Optional<MediaType> contentType,
Optional<Attachment> attachment) {
public static Builder newBuilder() {
return new AutoValue_EmailMessage.Builder();
return new AutoBuilder_EmailMessage_Builder();
}
public static EmailMessage create(String subject, String body, InternetAddress recipient) {
@@ -43,92 +52,68 @@ public abstract class EmailMessage {
.build();
}
public abstract String subject();
public abstract String body();
public abstract ImmutableSet<InternetAddress> recipients();
/** Optional return email address that overrides the default. */
public abstract Optional<InternetAddress> replyToEmailAddress();
public abstract ImmutableSet<InternetAddress> ccs();
public abstract ImmutableSet<InternetAddress> bccs();
public abstract Optional<MediaType> contentType();
public abstract Optional<Attachment> attachment();
/** Builder for {@link EmailMessage}. */
@AutoValue.Builder
public abstract static class Builder {
@AutoBuilder
public interface Builder {
public abstract Builder setSubject(String subject);
Builder setSubject(String subject);
public abstract Builder setBody(String body);
Builder setBody(String body);
public abstract Builder setRecipients(Collection<InternetAddress> recipients);
Builder setRecipients(Collection<InternetAddress> recipients);
public abstract Builder setReplyToEmailAddress(InternetAddress replyToEmailAddress);
Builder setReplyToEmailAddress(InternetAddress replyToEmailAddress);
public abstract Builder setReplyToEmailAddress(Optional<InternetAddress> replyToEmailAddress);
Builder setReplyToEmailAddress(Optional<InternetAddress> replyToEmailAddress);
public abstract Builder setBccs(Collection<InternetAddress> bccs);
Builder setBccs(Collection<InternetAddress> bccs);
public abstract Builder setCcs(Collection<InternetAddress> ccs);
Builder setCcs(Collection<InternetAddress> ccs);
public abstract Builder setContentType(MediaType contentType);
Builder setContentType(MediaType contentType);
public abstract Builder setAttachment(Attachment attachment);
Builder setAttachment(Attachment attachment);
abstract ImmutableSet.Builder<InternetAddress> recipientsBuilder();
ImmutableSet.Builder<InternetAddress> recipientsBuilder();
abstract ImmutableSet.Builder<InternetAddress> bccsBuilder();
ImmutableSet.Builder<InternetAddress> bccsBuilder();
abstract ImmutableSet.Builder<InternetAddress> ccsBuilder();
ImmutableSet.Builder<InternetAddress> ccsBuilder();
public Builder addRecipient(InternetAddress value) {
default Builder addRecipient(InternetAddress value) {
recipientsBuilder().add(value);
return this;
}
public Builder addBcc(InternetAddress bcc) {
default Builder addBcc(InternetAddress bcc) {
bccsBuilder().add(bcc);
return this;
}
public Builder addCc(InternetAddress cc) {
default Builder addCc(InternetAddress cc) {
ccsBuilder().add(cc);
return this;
}
public abstract EmailMessage build();
EmailMessage build();
}
/** An attachment to the email, if one exists. */
@AutoValue
public abstract static class Attachment {
public record Attachment(MediaType contentType, String filename, String content) {
public static Builder newBuilder() {
return new AutoValue_EmailMessage_Attachment.Builder();
return new AutoBuilder_EmailMessage_Attachment_Builder();
}
public abstract MediaType contentType();
public abstract String filename();
public abstract String content();
/** Builder for {@link Attachment}. */
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setContentType(MediaType contentType);
@AutoBuilder
public interface Builder {
Builder setContentType(MediaType contentType);
public abstract Builder setFilename(String filename);
Builder setFilename(String filename);
public abstract Builder setContent(String content);
Builder setContent(String content);
public abstract Attachment build();
Attachment build();
}
}
}

View File

@@ -0,0 +1,38 @@
// Copyright 2024 The Nomulus Authors. All Rights Reserved.
//
// Licensed 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 google.registry.util;
import static com.google.common.truth.Truth.assertThat;
import javax.mail.internet.InternetAddress;
import org.junit.jupiter.api.Test;
/** Unit tests for {@link EmailMessage} record. */
public class EmailMessageTest {
@Test
void testBuilderAddMethods_successfullyAddEverything() throws Exception {
EmailMessage em =
EmailMessage.newBuilder()
.setSubject("Foo")
.setBody("We have been trying to reach you about your vehicle's extended warranty.")
.addCc(new InternetAddress("foo@bar.baz"))
.addCc(new InternetAddress("jimbob@jimbo.google"))
.build();
assertThat(em.ccs())
.containsExactly(
new InternetAddress("foo@bar.baz"), new InternetAddress("jimbob@jimbo.google"));
}
}