diff --git a/core/src/main/java/google/registry/export/ExportPremiumTermsAction.java b/core/src/main/java/google/registry/export/ExportPremiumTermsAction.java index 0d64f8991..0f478d7f8 100644 --- a/core/src/main/java/google/registry/export/ExportPremiumTermsAction.java +++ b/core/src/main/java/google/registry/export/ExportPremiumTermsAction.java @@ -113,7 +113,7 @@ public class ExportPremiumTermsAction implements Runnable { "Skipping premium terms export for TLD %s because Drive folder isn't specified", tld); return Optional.of("Skipping export because no Drive folder is associated with this TLD"); } - if (registry.getPremiumList() == null) { + if (!registry.getPremiumList().isPresent()) { logger.atInfo().log("No premium terms to export for TLD %s", tld); return Optional.of("No premium lists configured"); } @@ -137,7 +137,8 @@ public class ExportPremiumTermsAction implements Runnable { } private String getFormattedPremiumTerms(Registry registry) { - String premiumListName = registry.getPremiumList().getName(); + checkState(registry.getPremiumList().isPresent(), "%s does not have a premium list", tld); + String premiumListName = registry.getPremiumList().get().getName(); checkState( PremiumListDao.getLatestRevision(premiumListName).isPresent(), "Could not load premium list for " + tld); diff --git a/core/src/main/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java b/core/src/main/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java index 529617101..620a4730e 100644 --- a/core/src/main/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java +++ b/core/src/main/java/google/registry/model/pricing/StaticPremiumListPricingEngine.java @@ -38,8 +38,11 @@ public final class StaticPremiumListPricingEngine implements PremiumPricingEngin String tld = getTldFromDomainName(fullyQualifiedDomainName); String label = InternetDomainName.from(fullyQualifiedDomainName).parts().get(0); Registry registry = Registry.get(checkNotNull(tld, "tld")); - Optional premiumPrice = - PremiumListDao.getPremiumPrice(registry.getPremiumList().getName(), label); + Optional premiumPrice = Optional.empty(); + if (registry.getPremiumList().isPresent()) { + premiumPrice = + PremiumListDao.getPremiumPrice(registry.getPremiumList().get().getName(), label); + } return DomainPrices.create( premiumPrice.isPresent(), premiumPrice.orElse(registry.getStandardCreateCost()), diff --git a/core/src/main/java/google/registry/model/registry/Registry.java b/core/src/main/java/google/registry/model/registry/Registry.java index 5680c8463..8de68fecd 100644 --- a/core/src/main/java/google/registry/model/registry/Registry.java +++ b/core/src/main/java/google/registry/model/registry/Registry.java @@ -607,8 +607,8 @@ public class Registry extends ImmutableObject implements Buildable, DatastoreAnd } @Nullable - public Key getPremiumList() { - return premiumList; + public Optional> getPremiumList() { + return Optional.ofNullable(premiumList); } public CurrencyUnit getCurrency() { diff --git a/core/src/main/java/google/registry/model/registry/label/PremiumList.java b/core/src/main/java/google/registry/model/registry/label/PremiumList.java index 09c05b9ee..a10aa6aee 100644 --- a/core/src/main/java/google/registry/model/registry/label/PremiumList.java +++ b/core/src/main/java/google/registry/model/registry/label/PremiumList.java @@ -263,7 +263,7 @@ public final class PremiumList extends BaseDomainLabelList> key) { - return Objects.equals(registry.getPremiumList(), key); + return Objects.equals(registry.getPremiumList().orElse(null), key); } @Override diff --git a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java index 8dc4ccd2d..8cb20b782 100644 --- a/core/src/test/java/google/registry/model/OteAccountBuilderTest.java +++ b/core/src/test/java/google/registry/model/OteAccountBuilderTest.java @@ -70,7 +70,8 @@ public final class OteAccountBuilderTest { private void assertTldExists(String tld, TldState tldState, Money eapFee) { Registry registry = Registry.get(tld); assertThat(registry).isNotNull(); - assertThat(registry.getPremiumList().getName()).isEqualTo("default_sandbox_list"); + assertThat(registry.getPremiumList()).isPresent(); + assertThat(registry.getPremiumList().get().getName()).isEqualTo("default_sandbox_list"); assertThat(registry.getTldStateTransitions()).containsExactly(START_OF_TIME, tldState); assertThat(registry.getDnsWriters()).containsExactly("VoidDnsWriter"); assertThat(registry.getAddGracePeriodLength()).isEqualTo(Duration.standardHours(1)); diff --git a/core/src/test/java/google/registry/model/registry/RegistryTest.java b/core/src/test/java/google/registry/model/registry/RegistryTest.java index 17dbbb358..7f786b631 100644 --- a/core/src/test/java/google/registry/model/registry/RegistryTest.java +++ b/core/src/test/java/google/registry/model/registry/RegistryTest.java @@ -49,6 +49,7 @@ import google.registry.testing.DualDatabaseTest; import google.registry.testing.TestOfyAndSql; import google.registry.testing.TestOfyOnly; import java.math.BigDecimal; +import java.util.Optional; import org.joda.money.Money; import org.joda.time.DateTime; import org.junit.jupiter.api.BeforeEach; @@ -249,9 +250,9 @@ public final class RegistryTest extends EntityTestCase { void testSetPremiumList() { PremiumList pl2 = persistPremiumList("tld2", "lol,USD 50", "cat,USD 700"); Registry registry = Registry.get("tld").asBuilder().setPremiumList(pl2).build(); - Key plKey = registry.getPremiumList(); - assertThat(plKey).isNotNull(); - PremiumList stored = PremiumListDao.getLatestRevision(plKey.getName()).get(); + Optional> plKey = registry.getPremiumList(); + assertThat(plKey).isPresent(); + PremiumList stored = PremiumListDao.getLatestRevision(plKey.get().getName()).get(); assertThat(stored.getName()).isEqualTo("tld2"); } diff --git a/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java b/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java index b8a14d69a..fb827ea3c 100644 --- a/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java +++ b/core/src/test/java/google/registry/tools/CreateDomainCommandTest.java @@ -15,12 +15,16 @@ package google.registry.tools; import static com.google.common.truth.Truth.assertThat; +import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.testing.DatabaseHelper.createTld; import static google.registry.testing.DatabaseHelper.persistPremiumList; import static google.registry.testing.DatabaseHelper.persistResource; import static org.junit.jupiter.api.Assertions.assertThrows; import com.beust.jcommander.ParameterException; +import com.google.common.collect.ImmutableSet; +import google.registry.dns.writer.VoidDnsWriter; +import google.registry.model.pricing.StaticPremiumListPricingEngine; import google.registry.model.registry.Registry; import google.registry.schema.tld.PremiumListDao; import google.registry.testing.DeterministicStringGenerator; @@ -82,6 +86,26 @@ class CreateDomainCommandTest extends EppToolCommandTestCase tm().put(registry)); runCommandForced( "--client=NewRegistrar", "--registrant=crr-admin", diff --git a/core/src/test/java/google/registry/tools/CreateTldCommandTest.java b/core/src/test/java/google/registry/tools/CreateTldCommandTest.java index ad19d7b5d..3837bdd18 100644 --- a/core/src/test/java/google/registry/tools/CreateTldCommandTest.java +++ b/core/src/test/java/google/registry/tools/CreateTldCommandTest.java @@ -519,7 +519,9 @@ class CreateTldCommandTest extends CommandTestCase { "--roid_suffix=Q9JYB4C", "--dns_writers=FooDnsWriter", "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getPremiumList().getName()).isEqualTo("xn--q9jyb4c"); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isPresent(); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList().get().getName()) + .isEqualTo("xn--q9jyb4c"); } @Test diff --git a/core/src/test/java/google/registry/tools/SetupOteCommandTest.java b/core/src/test/java/google/registry/tools/SetupOteCommandTest.java index 8b4ea0e1d..214a17fde 100644 --- a/core/src/test/java/google/registry/tools/SetupOteCommandTest.java +++ b/core/src/test/java/google/registry/tools/SetupOteCommandTest.java @@ -73,7 +73,7 @@ class SetupOteCommandTest extends CommandTestCase { assertThat(registry.getTldState(DateTime.now(UTC))).isEqualTo(tldState); assertThat(registry.getDnsWriters()).containsExactly("VoidDnsWriter"); assertThat(registry.getPremiumList()).isNotNull(); - assertThat(registry.getPremiumList().getName()).isEqualTo("default_sandbox_list"); + assertThat(registry.getPremiumList().get().getName()).isEqualTo("default_sandbox_list"); assertThat(registry.getAddGracePeriodLength()).isEqualTo(Duration.standardMinutes(60)); assertThat(registry.getRedemptionGracePeriodLength()).isEqualTo(Duration.standardMinutes(10)); assertThat(registry.getPendingDeleteLength()).isEqualTo(Duration.standardMinutes(5)); diff --git a/core/src/test/java/google/registry/tools/UpdateTldCommandTest.java b/core/src/test/java/google/registry/tools/UpdateTldCommandTest.java index 16e48aa16..4b1f3b4fa 100644 --- a/core/src/test/java/google/registry/tools/UpdateTldCommandTest.java +++ b/core/src/test/java/google/registry/tools/UpdateTldCommandTest.java @@ -38,6 +38,7 @@ import com.google.common.collect.ImmutableSortedMap; import com.googlecode.objectify.Key; import google.registry.model.registry.Registry; import google.registry.model.registry.label.PremiumList; +import java.util.Optional; import org.joda.money.Money; import org.joda.time.DateTime; import org.joda.time.Duration; @@ -838,21 +839,21 @@ class UpdateTldCommandTest extends CommandTestCase { @Test void testSuccess_removePremiumListWithNull() throws Exception { runCommandForced("--premium_list=null", "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isNull(); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isEmpty(); } @Test void testSuccess_removePremiumListWithBlank() throws Exception { runCommandForced("--premium_list=", "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isNull(); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isEmpty(); } @Test void testSuccess_premiumListNotRemovedWhenNotSpecified() throws Exception { runCommandForced("--add_reserved_lists=xn--q9jyb4c_r1,xn--q9jyb4c_r2", "xn--q9jyb4c"); - Key premiumListKey = Registry.get("xn--q9jyb4c").getPremiumList(); - assertThat(premiumListKey).isNotNull(); - assertThat(premiumListKey.getName()).isEqualTo("xn--q9jyb4c"); + Optional> premiumListKey = Registry.get("xn--q9jyb4c").getPremiumList(); + assertThat(premiumListKey).isPresent(); + assertThat(premiumListKey.get().getName()).isEqualTo("xn--q9jyb4c"); } @Test @@ -920,7 +921,9 @@ class UpdateTldCommandTest extends CommandTestCase { @Test void testSuccess_setPremiumList() throws Exception { runCommandForced("--premium_list=xn--q9jyb4c", "xn--q9jyb4c"); - assertThat(Registry.get("xn--q9jyb4c").getPremiumList().getName()).isEqualTo("xn--q9jyb4c"); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList()).isPresent(); + assertThat(Registry.get("xn--q9jyb4c").getPremiumList().get().getName()) + .isEqualTo("xn--q9jyb4c"); } @Test