diff --git a/java/google/registry/flows/Flow.java b/java/google/registry/flows/Flow.java index 80185a7e6..b972bf226 100644 --- a/java/google/registry/flows/Flow.java +++ b/java/google/registry/flows/Flow.java @@ -27,6 +27,7 @@ import google.registry.model.eppoutput.Result; import java.util.Collections; import java.util.HashSet; import java.util.Set; +import javax.annotation.Nullable; import org.joda.time.DateTime; /** @@ -78,8 +79,8 @@ public abstract class Flow { protected EppOutput createOutput( Result.Code code, - ResponseData responseData, - ImmutableList extensions) { + @Nullable ResponseData responseData, + @Nullable ImmutableList extensions) { return EppOutput.create(new EppResponse.Builder() .setTrid(trid) .setResult(Result.create(code)) diff --git a/java/google/registry/flows/ResourceDeleteFlow.java b/java/google/registry/flows/ResourceDeleteFlow.java index 4db8c1f94..a5e2af40b 100644 --- a/java/google/registry/flows/ResourceDeleteFlow.java +++ b/java/google/registry/flows/ResourceDeleteFlow.java @@ -25,6 +25,7 @@ import google.registry.model.eppoutput.EppOutput; import google.registry.model.eppoutput.EppResponse.ResponseExtension; import google.registry.model.eppoutput.Result.Code; import java.util.Set; +import javax.annotation.Nullable; /** * An EPP flow that deletes an {@link EppResource}. @@ -58,6 +59,7 @@ public abstract class ResourceDeleteFlow getDeleteResponseExtensions() { return null; } diff --git a/java/google/registry/flows/poll/PollFlow.java b/java/google/registry/flows/poll/PollFlow.java index bbb731f25..126c21190 100644 --- a/java/google/registry/flows/poll/PollFlow.java +++ b/java/google/registry/flows/poll/PollFlow.java @@ -31,6 +31,7 @@ import google.registry.model.eppoutput.Result; import google.registry.model.poll.MessageQueueInfo; import google.registry.model.poll.PollMessage; import java.util.List; +import javax.annotation.Nullable; /** Base class of EPP Poll command flows. Mostly provides datastore helper methods. */ public abstract class PollFlow extends LoggedInFlow { @@ -74,8 +75,8 @@ public abstract class PollFlow extends LoggedInFlow { protected EppOutput createOutput( Result.Code code, MessageQueueInfo messageQueueInfo, - ImmutableList responseData, - ImmutableList responseExtensions) { + @Nullable ImmutableList responseData, + @Nullable ImmutableList responseExtensions) { return EppOutput.create(new EppResponse.Builder() .setTrid(trid) .setResult(Result.create(code)) diff --git a/java/google/registry/model/eppoutput/EppResponse.java b/java/google/registry/model/eppoutput/EppResponse.java index 0d048133f..621671e59 100644 --- a/java/google/registry/model/eppoutput/EppResponse.java +++ b/java/google/registry/model/eppoutput/EppResponse.java @@ -47,6 +47,7 @@ import google.registry.model.poll.PendingActionNotificationResponse.ContactPendi import google.registry.model.poll.PendingActionNotificationResponse.DomainPendingActionNotificationResponse; import google.registry.model.transfer.TransferResponse.ContactTransferResponse; import google.registry.model.transfer.TransferResponse.DomainTransferResponse; +import javax.annotation.Nullable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlElementRefs; @@ -187,12 +188,12 @@ public class EppResponse extends ImmutableObject implements ResponseOrGreeting { return this; } - public Builder setResData(ImmutableList resData) { + public Builder setResData(@Nullable ImmutableList resData) { getInstance().resData = resData; return this; } - public Builder setExtensions(ImmutableList extensions) { + public Builder setExtensions(@Nullable ImmutableList extensions) { getInstance().extensions = extensions; return this; } diff --git a/java/google/registry/model/poll/MessageQueueInfo.java b/java/google/registry/model/poll/MessageQueueInfo.java index b3d7fc5e4..a3c2b0e5f 100644 --- a/java/google/registry/model/poll/MessageQueueInfo.java +++ b/java/google/registry/model/poll/MessageQueueInfo.java @@ -14,7 +14,10 @@ package google.registry.model.poll; +import static com.google.common.base.Preconditions.checkNotNull; + import google.registry.model.ImmutableObject; +import javax.annotation.Nullable; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import org.joda.time.DateTime; @@ -54,15 +57,15 @@ public class MessageQueueInfo extends ImmutableObject { } public static MessageQueueInfo create( - DateTime queueDate, - String msg, + @Nullable DateTime queueDate, + @Nullable String msg, Integer queueLength, String messageId) { MessageQueueInfo instance = new MessageQueueInfo(); instance.queueDate = queueDate; instance.msg = msg; - instance.queueLength = queueLength; - instance.messageId = messageId; + instance.queueLength = checkNotNull(queueLength); + instance.messageId = checkNotNull(messageId); return instance; } } diff --git a/javatests/google/registry/model/BUILD b/javatests/google/registry/model/BUILD index 29b3fc1e4..e06b7ae36 100644 --- a/javatests/google/registry/model/BUILD +++ b/javatests/google/registry/model/BUILD @@ -25,6 +25,7 @@ java_library( "//java/com/google/common/collect", "//java/com/google/common/io", "//java/com/google/common/net", + "//java/com/google/common/testing", "//java/com/google/common/util/concurrent", "//third_party/java/appengine:appengine-api-testonly", "//third_party/java/appengine:appengine-testing", diff --git a/javatests/google/registry/model/poll/MessageQueueInfoTest.java b/javatests/google/registry/model/poll/MessageQueueInfoTest.java index 67b8faf1a..386ab400d 100644 --- a/javatests/google/registry/model/poll/MessageQueueInfoTest.java +++ b/javatests/google/registry/model/poll/MessageQueueInfoTest.java @@ -16,6 +16,8 @@ package google.registry.model.poll; import static com.google.common.truth.Truth.assertThat; +import com.google.common.testing.NullPointerTester; +import com.google.common.testing.NullPointerTester.Visibility; import org.joda.time.DateTime; import org.junit.Test; import org.junit.runner.RunWith; @@ -37,4 +39,10 @@ public final class MessageQueueInfoTest { mp.messageId = "adorable"; assertThat(mp.getMessageId()).isEqualTo("adorable"); } + + @Test + public void testNullness() { + NullPointerTester tester = new NullPointerTester(); + tester.testStaticMethods(MessageQueueInfo.class, Visibility.PROTECTED); + } }