mirror of
https://github.com/google/nomulus
synced 2026-05-16 21:01:44 +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:
@@ -57,6 +57,7 @@ This document outlines foundational mandates, architectural patterns, and projec
|
||||
- **FakeClock and Sleeper:** Use `FakeClock` and `Sleeper` for any logic involving timeouts, delays, or expiration.
|
||||
- **Empirical Reproduction:** Before fixing a bug, always create a test case that reproduces the failure.
|
||||
- **Base Classes:** Leverage `CommandTestCase`, `EppToolCommandTestCase`, etc., to reduce boilerplate and ensure consistent setup (e.g., clock initialization).
|
||||
- **Gradle Test Patterns:** When running tests to investigate fixes in the "core" directory, try to first use the "standardTest" Gradle task. It is faster than the "test" task, which includes the "fragileTest" task. Only run the full "test" task after "standardTest" succeeds.
|
||||
|
||||
### 6. Project Dependencies
|
||||
- **Common Module:** When using `Clock` or other core utilities in a new or separate module (like `load-testing`), ensure `implementation project(':common')` is added to the module's `build.gradle`.
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -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 = "";
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user