1
0
mirror of https://github.com/google/nomulus synced 2026-05-23 00:01:58 +00:00

Add rdeEppParams to RDE output (#3041)

We mostly had the xsd code for this already, we just never actually used
it and added it to the output. Note that I had to make some changes to
allow the expected format (where some of the elements are empty).
This commit is contained in:
gbrodman
2026-05-13 10:38:07 -04:00
committed by GitHub
parent b8f14fef8d
commit b33c2f4874
8 changed files with 148 additions and 21 deletions

View File

@@ -220,6 +220,9 @@ public class RdeIO {
}
}
output.write(marshaller.marshalRdeEppParams());
counter.increment(RdeResourceType.EPP_PARAMS);
// Output XML that says how many resources were emitted.
header = counter.makeHeader(tld, mode);
output.write(marshaller.marshalOrDie(new XjcRdeHeaderElement(header)));

View File

@@ -20,15 +20,26 @@ import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.flogger.FluentLogger;
import google.registry.model.ImmutableObject;
import google.registry.model.domain.Domain;
import google.registry.model.eppcommon.ProtocolDefinition;
import google.registry.model.host.Host;
import google.registry.model.rde.RdeMode;
import google.registry.model.registrar.Registrar;
import google.registry.tldconfig.idn.IdnTable;
import google.registry.xjc.XjcXmlTransformer;
import google.registry.xjc.epp.XjcEppDcpAccessType;
import google.registry.xjc.epp.XjcEppDcpOursType;
import google.registry.xjc.epp.XjcEppDcpPurposeType;
import google.registry.xjc.epp.XjcEppDcpRecipientType;
import google.registry.xjc.epp.XjcEppDcpRetentionType;
import google.registry.xjc.epp.XjcEppDcpStatementType;
import google.registry.xjc.epp.XjcEppDcpType;
import google.registry.xjc.epp.XjcEppExtURIType;
import google.registry.xjc.rde.XjcRdeContentsType;
import google.registry.xjc.rde.XjcRdeDeposit;
import google.registry.xjc.rde.XjcRdeDepositTypeType;
import google.registry.xjc.rde.XjcRdeMenuType;
import google.registry.xjc.rdeeppparams.XjcRdeEppParams;
import google.registry.xjc.rdeeppparams.XjcRdeEppParamsElement;
import google.registry.xjc.rdeidn.XjcRdeIdn;
import google.registry.xjc.rdeidn.XjcRdeIdnElement;
import google.registry.xjc.rdepolicy.XjcRdePolicy;
@@ -151,6 +162,43 @@ public final class RdeMarshaller implements Serializable {
return marshalOrDie(new XjcRdeIdnElement(bean));
}
public String marshalRdeEppParams() {
XjcRdeEppParams bean = new XjcRdeEppParams();
bean.getVersions().add("1.0");
bean.getLangs().add("en");
bean.getObjURIs().add(RdeResourceType.DOMAIN.getUri());
bean.getObjURIs().add(RdeResourceType.HOST.getUri());
XjcEppExtURIType serviceExtensions = new XjcEppExtURIType();
serviceExtensions.getExtURIs().addAll(ProtocolDefinition.getVisibleServiceExtensionUris());
bean.setSvcExtension(serviceExtensions);
XjcEppDcpType dcpType = new XjcEppDcpType();
XjcEppDcpAccessType accessType = new XjcEppDcpAccessType();
accessType.setAll(new XjcEppDcpAccessType.All());
dcpType.setAccess(accessType);
XjcEppDcpStatementType statementType = new XjcEppDcpStatementType();
XjcEppDcpPurposeType purposeType = new XjcEppDcpPurposeType();
purposeType.setAdmin(new XjcEppDcpPurposeType.Admin());
purposeType.setProv(new XjcEppDcpPurposeType.Prov());
statementType.setPurpose(purposeType);
XjcEppDcpRecipientType recipientType = new XjcEppDcpRecipientType();
recipientType.getOurs().add(new XjcEppDcpOursType());
recipientType.setPublic(new XjcEppDcpRecipientType.Public());
statementType.setRecipient(recipientType);
XjcEppDcpRetentionType retentionType = new XjcEppDcpRetentionType();
retentionType.setStated(new XjcEppDcpRetentionType.Stated());
statementType.setRetention(retentionType);
dcpType.getStatements().add(statementType);
bean.setDcp(dcpType);
return marshalOrDie(new XjcRdeEppParamsElement(bean));
}
private DepositFragment marshalResource(
RdeResourceType type, ImmutableObject resource, JAXBElement<?> element) {
String xml = "";

View File

@@ -29,7 +29,8 @@ public enum RdeResourceType {
HOST("urn:ietf:params:xml:ns:rdeHost-1.0", EnumSet.of(FULL)),
REGISTRAR("urn:ietf:params:xml:ns:rdeRegistrar-1.0", EnumSet.of(FULL, THIN)),
IDN("urn:ietf:params:xml:ns:rdeIDN-1.0", EnumSet.of(FULL)),
HEADER("urn:ietf:params:xml:ns:rdeHeader-1.0", EnumSet.of(FULL, THIN));
HEADER("urn:ietf:params:xml:ns:rdeHeader-1.0", EnumSet.of(FULL, THIN)),
EPP_PARAMS("urn:ietf:params:xml:ns:rdeEppParams-1.0", EnumSet.of(FULL, THIN));
private final String uri;
private final ImmutableSet<RdeMode> modes;

View File

@@ -91,12 +91,12 @@ Data Collection Policy types.
<complexType name="dcpAccessType">
<choice>
<element name="all"/>
<element name="none"/>
<element name="null"/>
<element name="other"/>
<element name="personal"/>
<element name="personalAndOther"/>
<element name="all"><complexType/></element>
<element name="none"><complexType/></element>
<element name="null"><complexType/></element>
<element name="other"><complexType/></element>
<element name="personal"><complexType/></element>
<element name="personalAndOther"><complexType/></element>
</choice>
</complexType>
@@ -111,28 +111,29 @@ Data Collection Policy types.
<complexType name="dcpPurposeType">
<sequence>
<element name="admin"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="contact"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="other"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="prov"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
</sequence>
</complexType>
<complexType name="dcpRecipientType">
<sequence>
<element name="other"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="ours" type="epp:dcpOursType"
minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>
<element name="public"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="same"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
<element name="unrelated"
minOccurs="0"/>
minOccurs="0"><complexType/></element>
</sequence>
</complexType>
@@ -152,11 +153,11 @@ Data Collection Policy types.
<complexType name="dcpRetentionType">
<choice>
<element name="business"/>
<element name="indefinite"/>
<element name="legal"/>
<element name="none"/>
<element name="stated"/>
<element name="business"><complexType/></element>
<element name="indefinite"><complexType/></element>
<element name="legal"><complexType/></element>
<element name="none"><complexType/></element>
<element name="stated"><complexType/></element>
</choice>
</complexType>

View File

@@ -4,6 +4,7 @@
<rde:rdeMenu>
<rde:version>1.0</rde:version>
<rde:objURI>urn:ietf:params:xml:ns:rdeDomain-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeEppParams-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeHeader-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeRegistrar-1.0</rde:objURI>
</rde:rdeMenu>
@@ -11,10 +12,45 @@
<rdeDomain:domain/>
<rdeRegistrar:registrar/>
<rdeEppParams:eppParams>
<rdeEppParams:version>1.0</rdeEppParams:version>
<rdeEppParams:lang>en</rdeEppParams:lang>
<rdeEppParams:objURI>urn:ietf:params:xml:ns:rdeDomain-1.0</rdeEppParams:objURI>
<rdeEppParams:objURI>urn:ietf:params:xml:ns:rdeHost-1.0</rdeEppParams:objURI>
<rdeEppParams:svcExtension>
<epp:extURI>urn:ietf:params:xml:ns:launch-1.0</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:rgp-1.0</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:secDNS-1.1</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.6</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.11</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.12</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:epp:fee-1.0</epp:extURI>
</rdeEppParams:svcExtension>
<rdeEppParams:dcp>
<epp:access>
<epp:all/>
</epp:access>
<epp:statement>
<epp:purpose>
<epp:admin/>
<epp:prov/>
</epp:purpose>
<epp:recipient>
<epp:ours/>
<epp:public/>
</epp:recipient>
<epp:retention>
<epp:stated/>
</epp:retention>
</epp:statement>
</rdeEppParams:dcp>
</rdeEppParams:eppParams>
<rdeHeader:header>
<rdeHeader:tld>soy</rdeHeader:tld>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeDomain-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeRegistrar-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeEppParams-1.0">1</rdeHeader:count>
</rdeHeader:header>
</rde:contents>

View File

@@ -4,6 +4,7 @@
<rde:rdeMenu>
<rde:version>1.0</rde:version>
<rde:objURI>urn:ietf:params:xml:ns:rdeDomain-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeEppParams-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeHeader-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeHost-1.0</rde:objURI>
<rde:objURI>urn:ietf:params:xml:ns:rdeIDN-1.0</rde:objURI>
@@ -34,12 +35,47 @@
<rdeIDN:urlPolicy>https://www.registry.google/about/policies/domainabuse/</rdeIDN:urlPolicy>
</rdeIDN:idnTableRef>
<rdeEppParams:eppParams>
<rdeEppParams:version>1.0</rdeEppParams:version>
<rdeEppParams:lang>en</rdeEppParams:lang>
<rdeEppParams:objURI>urn:ietf:params:xml:ns:rdeDomain-1.0</rdeEppParams:objURI>
<rdeEppParams:objURI>urn:ietf:params:xml:ns:rdeHost-1.0</rdeEppParams:objURI>
<rdeEppParams:svcExtension>
<epp:extURI>urn:ietf:params:xml:ns:launch-1.0</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:rgp-1.0</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:secDNS-1.1</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.6</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.11</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:fee-0.12</epp:extURI>
<epp:extURI>urn:ietf:params:xml:ns:epp:fee-1.0</epp:extURI>
</rdeEppParams:svcExtension>
<rdeEppParams:dcp>
<epp:access>
<epp:all/>
</epp:access>
<epp:statement>
<epp:purpose>
<epp:admin/>
<epp:prov/>
</epp:purpose>
<epp:recipient>
<epp:ours/>
<epp:public/>
</epp:recipient>
<epp:retention>
<epp:stated/>
</epp:retention>
</epp:statement>
</rdeEppParams:dcp>
</rdeEppParams:eppParams>
<rdeHeader:header>
<rdeHeader:tld>soy</rdeHeader:tld>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeDomain-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeHost-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeRegistrar-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeIDN-1.0">4</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeEppParams-1.0">1</rdeHeader:count>
</rdeHeader:header>
</rde:contents>

View File

@@ -14,5 +14,6 @@
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeHost-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeRegistrar-1.0">1</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeIDN-1.0">4</rdeHeader:count>
<rdeHeader:count uri="urn:ietf:params:xml:ns:rdeEppParams-1.0">1</rdeHeader:count>
</rdeHeader:header>
</rdeReport:report>