diff --git a/java/com/google/domain/registry/rdap/RdapEntitySearchAction.java b/java/com/google/domain/registry/rdap/RdapEntitySearchAction.java index 0d832a161..bba3b9ff6 100644 --- a/java/com/google/domain/registry/rdap/RdapEntitySearchAction.java +++ b/java/com/google/domain/registry/rdap/RdapEntitySearchAction.java @@ -99,7 +99,7 @@ public class RdapEntitySearchAction extends RdapActionBase { } ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); builder.put("entitySearchResults", results); - RdapJsonFormatter.addTopLevelEntries(builder, BoilerplateType.OTHER, null, rdapLinkBase); + RdapJsonFormatter.addTopLevelEntries(builder, BoilerplateType.ENTITY, null, rdapLinkBase); return builder.build(); } diff --git a/java/com/google/domain/registry/rdap/RdapIcannStandardInformation.java b/java/com/google/domain/registry/rdap/RdapIcannStandardInformation.java index d2b95c5b0..0c78cc9fc 100644 --- a/java/com/google/domain/registry/rdap/RdapIcannStandardInformation.java +++ b/java/com/google/domain/registry/rdap/RdapIcannStandardInformation.java @@ -68,7 +68,7 @@ public class RdapIcannStandardInformation { ImmutableList.of( CONFORMANCE_REMARK, DOMAIN_STATUS_CODES_REMARK, INACCURACY_COMPLAINT_FORM_REMARK); - /** Boilerplate remarks required by non-domain responses. */ - static final ImmutableList> nonDomainBoilerplateRemarks = + /** Boilerplate remarks required by nameserver and entity responses. */ + static final ImmutableList> nameserverAndEntityBoilerplateRemarks = ImmutableList.of(CONFORMANCE_REMARK); } diff --git a/java/com/google/domain/registry/rdap/RdapJsonFormatter.java b/java/com/google/domain/registry/rdap/RdapJsonFormatter.java index 0f6cd49a6..a02aeb74f 100644 --- a/java/com/google/domain/registry/rdap/RdapJsonFormatter.java +++ b/java/com/google/domain/registry/rdap/RdapJsonFormatter.java @@ -77,12 +77,16 @@ import javax.annotation.Nullable; public class RdapJsonFormatter { /** - * What type of boilerplate notices are required for the RDAP JSON messages? The ICANN RDAP - * Profile specifies that, for instance, domain name responses should include a remark about - * domain status codes. So we need to know when to include such boilerplate. + * Indication of what type of boilerplate notices are required for the RDAP JSON messages. The + * ICANN RDAP Profile specifies that, for instance, domain name responses should include a remark + * about domain status codes. So we need to know when to include such boilerplate. On the other + * hand, remarks are not allowed except in domain, nameserver and entity objects, so we need to + * suppress them for other types of responses (e.g. help). */ public enum BoilerplateType { DOMAIN, + NAMESERVER, + ENTITY, OTHER } @@ -279,9 +283,17 @@ public class RdapJsonFormatter { noticesBuilder.add(tosNotice); } builder.put(NOTICES, noticesBuilder.build()); - builder.put(REMARKS, (boilerplateType == BoilerplateType.DOMAIN) - ? RdapIcannStandardInformation.domainBoilerplateRemarks - : RdapIcannStandardInformation.nonDomainBoilerplateRemarks); + switch (boilerplateType) { + case DOMAIN: + builder.put(REMARKS, RdapIcannStandardInformation.domainBoilerplateRemarks); + break; + case NAMESERVER: + case ENTITY: + builder.put(REMARKS, RdapIcannStandardInformation.nameserverAndEntityBoilerplateRemarks); + break; + default: // things other than domains, nameservers and entities cannot contain remarks + break; + } } /** AutoValue class to build parameters to {@link #makeRdapJsonNotice}. */ @@ -507,7 +519,7 @@ public class RdapJsonFormatter { builder.put("port43", whoisServer); } if (isTopLevel) { - addTopLevelEntries(builder, BoilerplateType.OTHER, null, linkBase); + addTopLevelEntries(builder, BoilerplateType.NAMESERVER, null, linkBase); } return builder.build(); } @@ -576,7 +588,7 @@ public class RdapJsonFormatter { builder.put("port43", whoisServer); } if (isTopLevel) { - addTopLevelEntries(builder, BoilerplateType.OTHER, null, linkBase); + addTopLevelEntries(builder, BoilerplateType.ENTITY, null, linkBase); } return builder.build(); } @@ -656,7 +668,7 @@ public class RdapJsonFormatter { builder.put("port43", whoisServer); } if (isTopLevel) { - addTopLevelEntries(builder, BoilerplateType.OTHER, null, linkBase); + addTopLevelEntries(builder, BoilerplateType.ENTITY, null, linkBase); } return builder.build(); } diff --git a/java/com/google/domain/registry/rdap/RdapNameserverSearchAction.java b/java/com/google/domain/registry/rdap/RdapNameserverSearchAction.java index b5dd9c56c..186b34dfd 100644 --- a/java/com/google/domain/registry/rdap/RdapNameserverSearchAction.java +++ b/java/com/google/domain/registry/rdap/RdapNameserverSearchAction.java @@ -107,7 +107,7 @@ public class RdapNameserverSearchAction extends RdapActionBase { } ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); builder.put("nameserverSearchResults", results); - RdapJsonFormatter.addTopLevelEntries(builder, BoilerplateType.OTHER, null, rdapLinkBase); + RdapJsonFormatter.addTopLevelEntries(builder, BoilerplateType.NAMESERVER, null, rdapLinkBase); return builder.build(); } diff --git a/javatests/com/google/domain/registry/rdap/RdapActionBaseTest.java b/javatests/com/google/domain/registry/rdap/RdapActionBaseTest.java index 57fa4efc8..be1e081d5 100644 --- a/javatests/com/google/domain/registry/rdap/RdapActionBaseTest.java +++ b/javatests/com/google/domain/registry/rdap/RdapActionBaseTest.java @@ -137,7 +137,7 @@ public class RdapActionBaseTest { @Test public void testValidName_works() throws Exception { assertThat(generateActualJson("no.thing")).isEqualTo(JSONValue.parse( - loadFileWithSubstitutions(this.getClass(), "rdapjson_toplevel.json", null))); + loadFileWithSubstitutions(this.getClass(), "rdapjson_toplevel.json", null))); assertThat(response.getStatus()).isEqualTo(200); } diff --git a/javatests/com/google/domain/registry/rdap/testdata/rdap_help_index.json b/javatests/com/google/domain/registry/rdap/testdata/rdap_help_index.json index 63b916c77..4940cf883 100644 --- a/javatests/com/google/domain/registry/rdap/testdata/rdap_help_index.json +++ b/javatests/com/google/domain/registry/rdap/testdata/rdap_help_index.json @@ -45,14 +45,5 @@ } ] } - ], - "remarks" : - [ - { - "description" : - [ - "This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0" - ] - } ] } diff --git a/javatests/com/google/domain/registry/rdap/testdata/rdap_help_tos.json b/javatests/com/google/domain/registry/rdap/testdata/rdap_help_tos.json index 54dd9823f..74b0e7133 100644 --- a/javatests/com/google/domain/registry/rdap/testdata/rdap_help_tos.json +++ b/javatests/com/google/domain/registry/rdap/testdata/rdap_help_tos.json @@ -27,14 +27,5 @@ } ] } - ], - "remarks" : - [ - { - "description" : - [ - "This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0" - ] - } ] } diff --git a/javatests/com/google/domain/registry/rdap/testdata/rdapjson_toplevel.json b/javatests/com/google/domain/registry/rdap/testdata/rdapjson_toplevel.json index 9d681a921..6b1a71517 100644 --- a/javatests/com/google/domain/registry/rdap/testdata/rdapjson_toplevel.json +++ b/javatests/com/google/domain/registry/rdap/testdata/rdapjson_toplevel.json @@ -31,14 +31,5 @@ } ] } - ], - "remarks" : - [ - { - "description" : - [ - "This response conforms to the RDAP Operational Profile for gTLD Registries and Registrars version 1.0" - ] - } ] }