Fix NullPointerException in StaticPremiumPricingEngine (#1164)

* Fix NullPointerException in StaticPremiumPricingEngine

* Make getPremiumList return optional

* add isPresent checks
This commit is contained in:
sarahcaseybot
2021-05-18 10:55:27 -04:00
committed by GitHub
parent c1f0c29134
commit 21aeedae11
10 changed files with 54 additions and 19 deletions
@@ -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);
@@ -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<Money> premiumPrice =
PremiumListDao.getPremiumPrice(registry.getPremiumList().getName(), label);
Optional<Money> premiumPrice = Optional.empty();
if (registry.getPremiumList().isPresent()) {
premiumPrice =
PremiumListDao.getPremiumPrice(registry.getPremiumList().get().getName(), label);
}
return DomainPrices.create(
premiumPrice.isPresent(),
premiumPrice.orElse(registry.getStandardCreateCost()),
@@ -607,8 +607,8 @@ public class Registry extends ImmutableObject implements Buildable, DatastoreAnd
}
@Nullable
public Key<PremiumList> getPremiumList() {
return premiumList;
public Optional<Key<PremiumList>> getPremiumList() {
return Optional.ofNullable(premiumList);
}
public CurrencyUnit getCurrency() {
@@ -263,7 +263,7 @@ public final class PremiumList extends BaseDomainLabelList<Money, PremiumList.Pr
@Override
public boolean refersToKey(Registry registry, Key<? extends BaseDomainLabelList<?, ?>> key) {
return Objects.equals(registry.getPremiumList(), key);
return Objects.equals(registry.getPremiumList().orElse(null), key);
}
@Override