diff --git a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainDeleteActionType.java b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainDeleteActionType.java index 1e05fa17d..84f1327b1 100644 --- a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainDeleteActionType.java +++ b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainDeleteActionType.java @@ -14,12 +14,11 @@ package google.registry.ui.server.console.domains; -import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import google.registry.model.console.ConsolePermission; /** An action that will run a delete EPP command on the given domain. */ -public class ConsoleBulkDomainDeleteActionType implements ConsoleDomainActionType { +public class ConsoleBulkDomainDeleteActionType extends ConsoleDomainActionType { private static final String DOMAIN_DELETE_XML = """ @@ -42,16 +41,13 @@ public class ConsoleBulkDomainDeleteActionType implements ConsoleDomainActionTyp """; - private final String reason; - public ConsoleBulkDomainDeleteActionType(JsonElement jsonElement) { - this.reason = jsonElement.getAsJsonObject().get("reason").getAsString(); + super(jsonElement); } @Override - public String getXmlContentsToRun(String domainName) { - return ConsoleDomainActionType.fillSubstitutions( - DOMAIN_DELETE_XML, ImmutableMap.of("DOMAIN_NAME", domainName, "REASON", reason)); + protected String getXmlTemplate() { + return DOMAIN_DELETE_XML; } @Override diff --git a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainSuspendActionType.java b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainSuspendActionType.java index 12c646313..b690438dd 100644 --- a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainSuspendActionType.java +++ b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainSuspendActionType.java @@ -14,12 +14,11 @@ package google.registry.ui.server.console.domains; -import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import google.registry.model.console.ConsolePermission; /** An action that will suspend the given domain, assigning all 5 server*Prohibited statuses. */ -public class ConsoleBulkDomainSuspendActionType implements ConsoleDomainActionType { +public class ConsoleBulkDomainSuspendActionType extends ConsoleDomainActionType { private static final String DOMAIN_SUSPEND_XML = """ @@ -52,16 +51,13 @@ public class ConsoleBulkDomainSuspendActionType implements ConsoleDomainActionTy """; - private final String reason; - public ConsoleBulkDomainSuspendActionType(JsonElement jsonElement) { - this.reason = jsonElement.getAsJsonObject().get("reason").getAsString(); + super(jsonElement); } @Override - public String getXmlContentsToRun(String domainName) { - return ConsoleDomainActionType.fillSubstitutions( - DOMAIN_SUSPEND_XML, ImmutableMap.of("DOMAIN_NAME", domainName, "REASON", reason)); + protected String getXmlTemplate() { + return DOMAIN_SUSPEND_XML; } @Override diff --git a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainUnsuspendActionType.java b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainUnsuspendActionType.java index 0759f05b1..0d3a959e1 100644 --- a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainUnsuspendActionType.java +++ b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleBulkDomainUnsuspendActionType.java @@ -14,12 +14,11 @@ package google.registry.ui.server.console.domains; -import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import google.registry.model.console.ConsolePermission; /** An action that will unsuspend the given domain, removing all 5 server*Prohibited statuses. */ -public class ConsoleBulkDomainUnsuspendActionType implements ConsoleDomainActionType { +public class ConsoleBulkDomainUnsuspendActionType extends ConsoleDomainActionType { private static final String DOMAIN_SUSPEND_XML = """ @@ -52,16 +51,13 @@ public class ConsoleBulkDomainUnsuspendActionType implements ConsoleDomainAction """; - private final String reason; - public ConsoleBulkDomainUnsuspendActionType(JsonElement jsonElement) { - this.reason = jsonElement.getAsJsonObject().get("reason").getAsString(); + super(jsonElement); } @Override - public String getXmlContentsToRun(String domainName) { - return ConsoleDomainActionType.fillSubstitutions( - DOMAIN_SUSPEND_XML, ImmutableMap.of("DOMAIN_NAME", domainName, "REASON", reason)); + protected String getXmlTemplate() { + return DOMAIN_SUSPEND_XML; } @Override diff --git a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleDomainActionType.java b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleDomainActionType.java index 35e4e7017..47fdd953e 100644 --- a/core/src/main/java/google/registry/ui/server/console/domains/ConsoleDomainActionType.java +++ b/core/src/main/java/google/registry/ui/server/console/domains/ConsoleDomainActionType.java @@ -14,20 +14,18 @@ package google.registry.ui.server.console.domains; -import com.google.common.collect.ImmutableMap; import com.google.common.escape.Escaper; import com.google.common.xml.XmlEscapers; import com.google.gson.JsonElement; import google.registry.model.console.ConsolePermission; -import java.util.Map; /** * A type of EPP action to perform on domain(s), run by the {@link ConsoleBulkDomainAction}. * - *
Each {@link BulkAction} defines the class that implements that action, including the EPP XML - * that will be run and the permission required. + *
Each {@link BulkAction} defines the class that extends that action, including the EPP XML that
+ * will be run and the permission required.
*/
-public interface ConsoleDomainActionType {
+public abstract class ConsoleDomainActionType {
enum BulkAction {
DELETE(ConsoleBulkDomainDeleteActionType.class),
@@ -45,20 +43,6 @@ public interface ConsoleDomainActionType {
}
}
- Escaper XML_ESCAPER = XmlEscapers.xmlContentEscaper();
-
- static String fillSubstitutions(String xmlTemplate, ImmutableMap Override this method if non-default substitutions are required.
+ */
+ protected String fillSubstitutions(String xmlTemplate, String domainName) {
+ String xml = xmlTemplate;
+ xml = replaceValue(xml, "DOMAIN_NAME", domainName);
+ return replaceValue(xml, "REASON", reason);
+ }
+
+ private String replaceValue(String xml, String key, String value) {
+ return xml.replaceAll("%" + key + "%", XML_ESCAPER.escape(value));
+ }
}