Handle nullness properly in some message/flow/poll code

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=127543268
This commit is contained in:
mcilwain 2016-07-15 08:39:25 -07:00 committed by Ben McIlwain
parent eed319990a
commit 71ab4a648b
7 changed files with 27 additions and 10 deletions

View file

@ -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<? extends ResponseExtension> extensions) {
@Nullable ResponseData responseData,
@Nullable ImmutableList<? extends ResponseExtension> extensions) {
return EppOutput.create(new EppResponse.Builder()
.setTrid(trid)
.setResult(Result.create(code))

View file

@ -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<R extends EppResource, C extends Single
}
/** Subclasses can override this to return response extensions. */
@Nullable
protected ImmutableList<? extends ResponseExtension> getDeleteResponseExtensions() {
return null;
}

View file

@ -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> responseData,
ImmutableList<ResponseExtension> responseExtensions) {
@Nullable ImmutableList<ResponseData> responseData,
@Nullable ImmutableList<ResponseExtension> responseExtensions) {
return EppOutput.create(new EppResponse.Builder()
.setTrid(trid)
.setResult(Result.create(code))

View file

@ -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<? extends ResponseData> resData) {
public Builder setResData(@Nullable ImmutableList<? extends ResponseData> resData) {
getInstance().resData = resData;
return this;
}
public Builder setExtensions(ImmutableList<? extends ResponseExtension> extensions) {
public Builder setExtensions(@Nullable ImmutableList<? extends ResponseExtension> extensions) {
getInstance().extensions = extensions;
return this;
}

View file

@ -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;
}
}

View file

@ -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",

View file

@ -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);
}
}