diff --git a/core/src/main/java/google/registry/config/RegistryConfig.java b/core/src/main/java/google/registry/config/RegistryConfig.java
index fd8b4afbc..f5421975d 100644
--- a/core/src/main/java/google/registry/config/RegistryConfig.java
+++ b/core/src/main/java/google/registry/config/RegistryConfig.java
@@ -1111,12 +1111,6 @@ public final class RegistryConfig {
return config.registryPolicy.whoisCommandFactoryClass;
}
- @Provides
- @Config("allocationTokenCustomLogicClass")
- public static String provideAllocationTokenCustomLogicClass(RegistryConfigSettings config) {
- return config.registryPolicy.allocationTokenCustomLogicClass;
- }
-
@Provides
@Config("dnsCountQueryCoordinatorClass")
public static String dnsCountQueryCoordinatorClass(RegistryConfigSettings config) {
diff --git a/core/src/main/java/google/registry/config/RegistryConfigSettings.java b/core/src/main/java/google/registry/config/RegistryConfigSettings.java
index bc1b3f9ea..32dd08ee8 100644
--- a/core/src/main/java/google/registry/config/RegistryConfigSettings.java
+++ b/core/src/main/java/google/registry/config/RegistryConfigSettings.java
@@ -91,7 +91,6 @@ public class RegistryConfigSettings {
public String productName;
public String customLogicFactoryClass;
public String whoisCommandFactoryClass;
- public String allocationTokenCustomLogicClass;
public String dnsCountQueryCoordinatorClass;
public int contactAutomaticTransferDays;
public String greetingServerId;
diff --git a/core/src/main/java/google/registry/config/files/default-config.yaml b/core/src/main/java/google/registry/config/files/default-config.yaml
index b9a6c30d3..85ebbdf34 100644
--- a/core/src/main/java/google/registry/config/files/default-config.yaml
+++ b/core/src/main/java/google/registry/config/files/default-config.yaml
@@ -69,10 +69,6 @@ registryPolicy:
# See whois/WhoisCommandFactory.java
whoisCommandFactoryClass: google.registry.whois.WhoisCommandFactory
- # Custom logic class for handling allocation tokens.
- # See flows/domain/token/AllocationTokenCustomLogic.java
- allocationTokenCustomLogicClass: google.registry.flows.domain.token.AllocationTokenCustomLogic
-
# Custom logic class for handling DNS query count reporting for ICANN.
# See reporting/icann/DnsCountQueryCoordinator.java
dnsCountQueryCoordinatorClass: google.registry.reporting.icann.DummyDnsCountQueryCoordinator
diff --git a/core/src/main/java/google/registry/flows/FlowComponent.java b/core/src/main/java/google/registry/flows/FlowComponent.java
index 5b3428116..f5d48bb23 100644
--- a/core/src/main/java/google/registry/flows/FlowComponent.java
+++ b/core/src/main/java/google/registry/flows/FlowComponent.java
@@ -43,7 +43,6 @@ import google.registry.flows.domain.DomainTransferQueryFlow;
import google.registry.flows.domain.DomainTransferRejectFlow;
import google.registry.flows.domain.DomainTransferRequestFlow;
import google.registry.flows.domain.DomainUpdateFlow;
-import google.registry.flows.domain.token.AllocationTokenModule;
import google.registry.flows.host.HostCheckFlow;
import google.registry.flows.host.HostCreateFlow;
import google.registry.flows.host.HostDeleteFlow;
@@ -59,7 +58,6 @@ import google.registry.model.eppcommon.Trid;
/** Dagger component for flow classes. */
@FlowScope
@Subcomponent(modules = {
- AllocationTokenModule.class,
BatchModule.class,
CustomLogicModule.class,
DnsModule.class,
diff --git a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenCustomLogic.java b/core/src/main/java/google/registry/flows/domain/token/AllocationTokenCustomLogic.java
deleted file mode 100644
index fa928849f..000000000
--- a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenCustomLogic.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2017 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.flows.domain.token;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
-import com.google.common.net.InternetDomainName;
-import google.registry.flows.EppException;
-import google.registry.model.domain.Domain;
-import google.registry.model.domain.DomainCommand;
-import google.registry.model.domain.token.AllocationToken;
-import google.registry.model.tld.Tld;
-import org.joda.time.DateTime;
-
-/**
- * A no-op base class for allocation token custom logic.
- *
- *
Extend this class and override the hook(s) to perform custom logic.
- */
-public class AllocationTokenCustomLogic {
-
- /** Performs additional custom logic for validating a token on a domain create. */
- public AllocationToken validateToken(
- DomainCommand.Create command,
- AllocationToken token,
- Tld tld,
- String registrarId,
- DateTime now)
- throws EppException {
- // Do nothing.
- return token;
- }
-
- /** Performs additional custom logic for validating a token on an existing domain. */
- public AllocationToken validateToken(
- Domain domain, AllocationToken token, Tld tld, String registrarId, DateTime now)
- throws EppException {
- // Do nothing.
- return token;
- }
-
- /** Performs additional custom logic for performing domain checks using a token. */
- public ImmutableMap checkDomainsWithToken(
- ImmutableList domainNames,
- AllocationToken token,
- String registrarId,
- DateTime now) {
- // Do nothing.
- return Maps.toMap(domainNames, k -> "");
- }
-}
diff --git a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenFlowUtils.java b/core/src/main/java/google/registry/flows/domain/token/AllocationTokenFlowUtils.java
index 01a7d20f0..f4f9f27fd 100644
--- a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenFlowUtils.java
+++ b/core/src/main/java/google/registry/flows/domain/token/AllocationTokenFlowUtils.java
@@ -19,7 +19,6 @@ import static google.registry.persistence.transaction.TransactionManagerFactory.
import static google.registry.pricing.PricingEngineProxy.isDomainPremium;
import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
import com.google.common.net.InternetDomainName;
@@ -48,12 +47,8 @@ import org.joda.time.DateTime;
/** Utility functions for dealing with {@link AllocationToken}s in domain flows. */
public class AllocationTokenFlowUtils {
- private final AllocationTokenCustomLogic tokenCustomLogic;
-
@Inject
- AllocationTokenFlowUtils(AllocationTokenCustomLogic tokenCustomLogic) {
- this.tokenCustomLogic = tokenCustomLogic;
- }
+ public AllocationTokenFlowUtils() {}
/**
* Checks if the allocation token applies to the given domain names, used for domain checks.
@@ -75,7 +70,6 @@ public class AllocationTokenFlowUtils {
// If the token is only invalid for some domain names (e.g. an invalid TLD), include those error
// results for only those domain names
- ImmutableList.Builder validDomainNames = new ImmutableList.Builder<>();
ImmutableMap.Builder resultsBuilder = new ImmutableMap.Builder<>();
for (InternetDomainName domainName : domainNames) {
try {
@@ -86,16 +80,11 @@ public class AllocationTokenFlowUtils {
registrarId,
isDomainPremium(domainName.toString(), now),
now);
- validDomainNames.add(domainName);
+ resultsBuilder.put(domainName, "");
} catch (EppException e) {
resultsBuilder.put(domainName, e.getMessage());
}
}
-
- // For all valid domain names, run the custom logic and include the results
- resultsBuilder.putAll(
- tokenCustomLogic.checkDomainsWithToken(
- validDomainNames.build(), tokenEntity, registrarId, now));
return new AllocationTokenDomainCheckResults(Optional.of(tokenEntity), resultsBuilder.build());
}
@@ -209,7 +198,7 @@ public class AllocationTokenFlowUtils {
registrarId,
isDomainPremium(command.getDomainName(), now),
now);
- return Optional.of(tokenCustomLogic.validateToken(command, tokenEntity, tld, registrarId, now));
+ return Optional.of(tokenEntity);
}
/** Verifies and returns the allocation token if one is specified, otherwise does nothing. */
@@ -232,8 +221,7 @@ public class AllocationTokenFlowUtils {
registrarId,
isDomainPremium(existingDomain.getDomainName(), now),
now);
- return Optional.of(
- tokenCustomLogic.validateToken(existingDomain, tokenEntity, tld, registrarId, now));
+ return Optional.of(tokenEntity);
}
public static void verifyTokenAllowedOnDomain(
diff --git a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenModule.java b/core/src/main/java/google/registry/flows/domain/token/AllocationTokenModule.java
deleted file mode 100644
index c980aff5c..000000000
--- a/core/src/main/java/google/registry/flows/domain/token/AllocationTokenModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 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.flows.domain.token;
-
-import static google.registry.util.TypeUtils.getClassFromString;
-import static google.registry.util.TypeUtils.instantiate;
-
-import dagger.Module;
-import dagger.Provides;
-import google.registry.config.RegistryConfig.Config;
-
-/** Dagger module for allocation token classes. */
-@Module
-public class AllocationTokenModule {
-
- @Provides
- static AllocationTokenCustomLogic provideAllocationTokenCustomLogic(
- @Config("allocationTokenCustomLogicClass") String customClass) {
- return instantiate(getClassFromString(customClass, AllocationTokenCustomLogic.class));
- }
-}
diff --git a/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java b/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java
index 9c3df5e72..f7a95026a 100644
--- a/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java
+++ b/core/src/test/java/google/registry/flows/domain/token/AllocationTokenFlowUtilsTest.java
@@ -35,7 +35,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.Maps;
import com.google.common.net.InternetDomainName;
import google.registry.flows.EppException;
import google.registry.flows.domain.token.AllocationTokenFlowUtils.AllocationTokenNotInPromotionException;
@@ -63,8 +62,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
/** Unit tests for {@link AllocationTokenFlowUtils}. */
class AllocationTokenFlowUtilsTest {
- private final AllocationTokenFlowUtils flowUtils =
- new AllocationTokenFlowUtils(new AllocationTokenCustomLogic());
+ private final AllocationTokenFlowUtils flowUtils = new AllocationTokenFlowUtils();
@RegisterExtension
final JpaIntegrationTestExtension jpa =
@@ -185,47 +183,6 @@ class AllocationTokenFlowUtilsTest {
.marshalsToXml();
}
- @Test
- void test_validateTokenCreate_callsCustomLogic() {
- AllocationTokenFlowUtils failingFlowUtils =
- new AllocationTokenFlowUtils(new FailingAllocationTokenCustomLogic());
- persistResource(
- new AllocationToken.Builder().setToken("tokeN").setTokenType(SINGLE_USE).build());
- when(allocationTokenExtension.getAllocationToken()).thenReturn("tokeN");
- Exception thrown =
- assertThrows(
- IllegalStateException.class,
- () ->
- failingFlowUtils.verifyAllocationTokenCreateIfPresent(
- createCommand("blah.tld"),
- Tld.get("tld"),
- "TheRegistrar",
- DateTime.now(UTC),
- Optional.of(allocationTokenExtension)));
- assertThat(thrown).hasMessageThat().isEqualTo("failed for tests");
- }
-
- @Test
- void test_validateTokenExistingDomain_callsCustomLogic() {
- AllocationTokenFlowUtils failingFlowUtils =
- new AllocationTokenFlowUtils(new FailingAllocationTokenCustomLogic());
- persistResource(
- new AllocationToken.Builder().setToken("tokeN").setTokenType(SINGLE_USE).build());
- when(allocationTokenExtension.getAllocationToken()).thenReturn("tokeN");
- Exception thrown =
- assertThrows(
- IllegalStateException.class,
- () ->
- failingFlowUtils.verifyAllocationTokenIfPresent(
- DatabaseHelper.newDomain("blah.tld"),
- Tld.get("tld"),
- "TheRegistrar",
- DateTime.now(UTC),
- CommandName.RENEW,
- Optional.of(allocationTokenExtension)));
- assertThat(thrown).hasMessageThat().isEqualTo("failed for tests");
- }
-
@Test
void test_validateTokenCreate_invalidForClientId() {
persistResource(
@@ -383,49 +340,6 @@ class AllocationTokenFlowUtilsTest {
.inOrder();
}
- @Test
- void test_checkDomainsWithToken_callsCustomLogic() {
- persistResource(
- new AllocationToken.Builder().setToken("tokeN").setTokenType(SINGLE_USE).build());
- AllocationTokenFlowUtils failingFlowUtils =
- new AllocationTokenFlowUtils(new FailingAllocationTokenCustomLogic());
- Exception thrown =
- assertThrows(
- IllegalStateException.class,
- () ->
- failingFlowUtils.checkDomainsWithToken(
- ImmutableList.of(
- InternetDomainName.from("blah.tld"), InternetDomainName.from("blah2.tld")),
- "tokeN",
- "TheRegistrar",
- DateTime.now(UTC)));
- assertThat(thrown).hasMessageThat().isEqualTo("failed for tests");
- }
-
- @Test
- void test_checkDomainsWithToken_resultsFromCustomLogicAreIntegrated() {
- persistResource(
- new AllocationToken.Builder().setToken("tokeN").setTokenType(SINGLE_USE).build());
- AllocationTokenFlowUtils customResultFlowUtils =
- new AllocationTokenFlowUtils(new CustomResultAllocationTokenCustomLogic());
- assertThat(
- customResultFlowUtils
- .checkDomainsWithToken(
- ImmutableList.of(
- InternetDomainName.from("blah.tld"), InternetDomainName.from("bunny.tld")),
- "tokeN",
- "TheRegistrar",
- DateTime.now(UTC))
- .domainCheckResults())
- .containsExactlyEntriesIn(
- ImmutableMap.of(
- InternetDomainName.from("blah.tld"),
- "",
- InternetDomainName.from("bunny.tld"),
- "fufu"))
- .inOrder();
- }
-
private void assertValidateCreateThrowsEppException(Class extends EppException> clazz) {
assertAboutEppExceptions()
.that(
@@ -475,46 +389,4 @@ class AllocationTokenFlowUtilsTest {
.put(promoStart.plusMonths(1), ENDED)
.build());
}
-
- /** An {@link AllocationTokenCustomLogic} class that throws exceptions on every method. */
- private static class FailingAllocationTokenCustomLogic extends AllocationTokenCustomLogic {
-
- @Override
- public AllocationToken validateToken(
- DomainCommand.Create command,
- AllocationToken token,
- Tld tld,
- String registrarId,
- DateTime now) {
- throw new IllegalStateException("failed for tests");
- }
-
- @Override
- public AllocationToken validateToken(
- Domain domain, AllocationToken token, Tld tld, String registrarId, DateTime now) {
- throw new IllegalStateException("failed for tests");
- }
-
- @Override
- public ImmutableMap checkDomainsWithToken(
- ImmutableList domainNames,
- AllocationToken tokenEntity,
- String registrarId,
- DateTime now) {
- throw new IllegalStateException("failed for tests");
- }
- }
-
- /** An {@link AllocationTokenCustomLogic} class that returns custom check results for bunnies. */
- private static class CustomResultAllocationTokenCustomLogic extends AllocationTokenCustomLogic {
-
- @Override
- public ImmutableMap checkDomainsWithToken(
- ImmutableList domainNames,
- AllocationToken tokenEntity,
- String registrarId,
- DateTime now) {
- return Maps.toMap(domainNames, domain -> domain.toString().contains("bunny") ? "fufu" : "");
- }
- }
}