diff --git a/java/google/registry/flows/domain/DomainInfoFlow.java b/java/google/registry/flows/domain/DomainInfoFlow.java index 4ae781d37..a6db9958f 100644 --- a/java/google/registry/flows/domain/DomainInfoFlow.java +++ b/java/google/registry/flows/domain/DomainInfoFlow.java @@ -24,10 +24,13 @@ import google.registry.model.domain.DomainResource; import google.registry.model.domain.DomainResource.Builder; import google.registry.model.domain.fee.FeeInfoExtension; import google.registry.model.domain.fee.FeeInfoResponseExtension; +import google.registry.model.domain.regtype.RegTypeInfoResponseExtension; import google.registry.model.domain.rgp.GracePeriodStatus; import google.registry.model.domain.rgp.RgpInfoExtension; import google.registry.model.eppoutput.Response.ResponseExtension; +import java.util.List; + /** * An EPP flow that reads a domain. * @@ -40,9 +43,12 @@ import google.registry.model.eppoutput.Response.ResponseExtension; */ public class DomainInfoFlow extends BaseDomainInfoFlow { + protected List registrationTypes; + @Override protected void initSingleResourceFlow() throws EppException { registerExtensions(FeeInfoExtension.class); + registrationTypes = ImmutableList.of(); } @Override @@ -92,6 +98,9 @@ public class DomainInfoFlow extends BaseDomainInfoFlow feeInfo, builder, getTargetId(), existingResource.getTld(), getClientId(), now); extensions.add(builder.build()); } + if (!registrationTypes.isEmpty()) { + extensions.add(RegTypeInfoResponseExtension.create(registrationTypes)); + } return extensions.build(); } } diff --git a/java/google/registry/model/domain/regtype/BaseRegTypeCommand.java b/java/google/registry/model/domain/regtype/BaseRegTypeCommand.java index 4e9c906e6..a00aa0d49 100644 --- a/java/google/registry/model/domain/regtype/BaseRegTypeCommand.java +++ b/java/google/registry/model/domain/regtype/BaseRegTypeCommand.java @@ -32,10 +32,10 @@ public class BaseRegTypeCommand extends ImmutableObject { /** The registration type (which may be a comma-delimited list of values). */ @XmlElement(name = "type") - String type; + String regType; public List getRegistrationTypes() { - return Splitter.on(',').splitToList(type); + return Splitter.on(',').splitToList(regType); } } diff --git a/java/google/registry/model/domain/regtype/RegTypeInfoResponseExtension.java b/java/google/registry/model/domain/regtype/RegTypeInfoResponseExtension.java new file mode 100644 index 000000000..c7aeb7797 --- /dev/null +++ b/java/google/registry/model/domain/regtype/RegTypeInfoResponseExtension.java @@ -0,0 +1,39 @@ +// Copyright 2016 The Domain Registry 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.model.domain.regtype; + +import com.google.common.base.Joiner; + +import google.registry.model.eppoutput.Response.ResponseExtension; + +import java.util.List; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * An XML data object that represents a registration type extension that may be present on the + * response to EPP domain info EPP commands. + */ +@XmlRootElement(name = "infData") +public class RegTypeInfoResponseExtension extends BaseRegTypeCommand implements ResponseExtension { + + public static RegTypeInfoResponseExtension create(List registrationTypes) { + RegTypeInfoResponseExtension instance = new RegTypeInfoResponseExtension(); + instance.regType = Joiner.on(",").join(registrationTypes); + return instance; + } + + private RegTypeInfoResponseExtension() {} +} diff --git a/java/google/registry/model/eppoutput/Response.java b/java/google/registry/model/eppoutput/Response.java index 85ea8a4e8..38997c7cb 100644 --- a/java/google/registry/model/eppoutput/Response.java +++ b/java/google/registry/model/eppoutput/Response.java @@ -32,6 +32,7 @@ import google.registry.model.domain.fee.FeeUpdateResponseExtension; import google.registry.model.domain.launch.LaunchCheckResponseExtension; import google.registry.model.domain.launch.LaunchCreateResponseExtension; import google.registry.model.domain.launch.LaunchInfoResponseExtension; +import google.registry.model.domain.regtype.RegTypeInfoResponseExtension; import google.registry.model.domain.rgp.RgpInfoExtension; import google.registry.model.domain.secdns.SecDnsInfoExtension; import google.registry.model.eppcommon.Trid; @@ -132,6 +133,7 @@ public class Response extends ImmutableObject implements ResponseOrGreeting { @XmlElementRef(type = LaunchCheckResponseExtension.class), @XmlElementRef(type = LaunchCreateResponseExtension.class), @XmlElementRef(type = LaunchInfoResponseExtension.class), + @XmlElementRef(type = RegTypeInfoResponseExtension.class), @XmlElementRef(type = RgpInfoExtension.class), @XmlElementRef(type = SecDnsInfoExtension.class) }) @XmlElementWrapper(name = "extension")