mirror of
https://github.com/google/nomulus.git
synced 2025-05-30 01:10:14 +02:00
It's best to be consistent and use the same thing everywhere. "clientId" was already used in more places and is shorter and no more ambiguous, so it's the logical one to win out. Note that this CL is almost solely a big Eclipse-assisted refactoring. There are two places that I did not change clientIdentifier -- the actual entity field on Registrar (though I did change all getters and setters), and the name of a column on the exported registrar spreadsheet. Both would require data migrations. Also fixes a few minor nits discovered in touched files, including an incorrect test in OfyFilterTest.java and some superfluous uses of String.format() when calling checkArgument(). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=133956465
186 lines
7.6 KiB
Java
186 lines
7.6 KiB
Java
// 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.rde;
|
|
|
|
import static com.google.common.base.MoreObjects.firstNonNull;
|
|
|
|
import google.registry.model.registrar.Registrar;
|
|
import google.registry.model.registrar.RegistrarAddress;
|
|
import google.registry.xjc.contact.XjcContactE164Type;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrar;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarAddrType;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarElement;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarPostalInfoEnumType;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarPostalInfoType;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarStatusType;
|
|
import google.registry.xjc.rderegistrar.XjcRdeRegistrarWhoisInfoType;
|
|
import java.math.BigInteger;
|
|
|
|
/** Utility class that turns {@link Registrar} as {@link XjcRdeRegistrarElement}. */
|
|
final class RegistrarToXjcConverter {
|
|
|
|
private static final String UNKNOWN_EMAIL = "unknown@crr.com";
|
|
private static final String UNKNOWN_CITY = "Unknown";
|
|
private static final String UNKNOWN_ZIP = "00000";
|
|
private static final String UNKNOWN_CC = "US";
|
|
|
|
/** Converts {@link Registrar} to {@link XjcRdeRegistrarElement}. */
|
|
static XjcRdeRegistrarElement convert(Registrar registrar) {
|
|
return new XjcRdeRegistrarElement(convertRegistrar(registrar));
|
|
}
|
|
|
|
/** Converts {@link Registrar} to {@link XjcRdeRegistrar}. */
|
|
static XjcRdeRegistrar convertRegistrar(Registrar model) {
|
|
XjcRdeRegistrar bean = new XjcRdeRegistrar();
|
|
|
|
// o An <id> element that contains the Registry-unique identifier of
|
|
// the registrar object. This <id> has a superordinate relationship
|
|
// to a subordinate <clID>, <crRr> or <upRr> of domain, contact and
|
|
// host objects.
|
|
bean.setId(model.getClientId());
|
|
|
|
// o An <name> element that contains the name of the registrar.
|
|
bean.setName(model.getRegistrarName());
|
|
|
|
// o An OPTIONAL <gurid> element that contains the ID assigned by
|
|
// ICANN.
|
|
Long ianaId = model.getIanaIdentifier();
|
|
if (ianaId != null) {
|
|
bean.setGurid(BigInteger.valueOf(ianaId));
|
|
}
|
|
|
|
// o A <status> element that contains the operational status of the
|
|
// registrar. Possible values are: ok, readonly and terminated.
|
|
switch (model.getState()) {
|
|
case ACTIVE:
|
|
bean.setStatus(XjcRdeRegistrarStatusType.OK);
|
|
break;
|
|
case PENDING:
|
|
case SUSPENDED:
|
|
bean.setStatus(XjcRdeRegistrarStatusType.READONLY);
|
|
break;
|
|
default:
|
|
throw new IllegalStateException(String.format("Bad state: %s", model.getState()));
|
|
}
|
|
|
|
// o One or two <postalInfo> elements that contain postal- address
|
|
// information. Two elements are provided so that address
|
|
// information can be provided in both internationalized and
|
|
// localized forms; a "type" attribute is used to identify the two
|
|
// forms. If an internationalized form (type="int") is provided,
|
|
// element content MUST be represented in a subset of UTF-8 that can
|
|
// be represented in the 7-bit US-ASCII character set. If a
|
|
// localized form (type="loc") is provided, element content MAY be
|
|
// represented in unrestricted UTF-8.
|
|
RegistrarAddress localizedAddress = model.getLocalizedAddress();
|
|
if (localizedAddress != null) {
|
|
bean.getPostalInfos().add(convertPostalInfo(false, localizedAddress));
|
|
}
|
|
RegistrarAddress internationalizedAddress = model.getInternationalizedAddress();
|
|
if (internationalizedAddress != null) {
|
|
bean.getPostalInfos().add(convertPostalInfo(true, internationalizedAddress));
|
|
}
|
|
|
|
// o An OPTIONAL <voice> element that contains the registrar's voice
|
|
// telephone number.
|
|
// XXX: Make Registrar use PhoneNumber.
|
|
if (model.getPhoneNumber() != null) {
|
|
XjcContactE164Type phone = new XjcContactE164Type();
|
|
phone.setValue(model.getPhoneNumber());
|
|
bean.setVoice(phone);
|
|
}
|
|
|
|
// o An OPTIONAL <fax> element that contains the registrar's facsimile
|
|
// telephone number.
|
|
if (model.getFaxNumber() != null) {
|
|
XjcContactE164Type fax = new XjcContactE164Type();
|
|
fax.setValue(model.getFaxNumber());
|
|
bean.setFax(fax);
|
|
}
|
|
|
|
// o An <email> element that contains the registrar's email address.
|
|
bean.setEmail(firstNonNull(model.getEmailAddress(), UNKNOWN_EMAIL));
|
|
|
|
// o An OPTIONAL <url> element that contains the registrar's URL.
|
|
bean.setUrl(model.getUrl());
|
|
|
|
// o An OPTIONAL <whoisInfo> elements that contains whois information.
|
|
// The <whoisInfo> element contains the following child elements:
|
|
//
|
|
// * An OPTIONAL <name> element that contains the name of the
|
|
// registrar WHOIS server listening on TCP port 43 as specified in
|
|
// [RFC3912].
|
|
//
|
|
// * An OPTIONAL <url> element that contains the name of the
|
|
// registrar WHOIS server listening on TCP port 80/443.
|
|
if (model.getWhoisServer() != null) {
|
|
XjcRdeRegistrarWhoisInfoType whoisInfo = new XjcRdeRegistrarWhoisInfoType();
|
|
whoisInfo.setName(model.getWhoisServer());
|
|
bean.setWhoisInfo(whoisInfo);
|
|
}
|
|
|
|
// o A <crDate> element that contains the date and time of registrar-
|
|
// object creation.
|
|
bean.setCrDate(model.getCreationTime());
|
|
|
|
// o An OPTIONAL <upDate> element that contains the date and time of
|
|
// the most recent RDE registrar-object modification. This element
|
|
// MUST NOT be present if the rdeRegistrar object has never been
|
|
// modified.
|
|
bean.setUpDate(model.getLastUpdateTime());
|
|
|
|
return bean;
|
|
}
|
|
|
|
private static XjcRdeRegistrarPostalInfoType convertPostalInfo(
|
|
boolean isInt, RegistrarAddress model) {
|
|
XjcRdeRegistrarPostalInfoType bean = new XjcRdeRegistrarPostalInfoType();
|
|
bean.setType(isInt
|
|
? XjcRdeRegistrarPostalInfoEnumType.INT
|
|
: XjcRdeRegistrarPostalInfoEnumType.LOC);
|
|
bean.setAddr(convertAddress(model));
|
|
return bean;
|
|
}
|
|
|
|
private static XjcRdeRegistrarAddrType convertAddress(RegistrarAddress model) {
|
|
XjcRdeRegistrarAddrType bean = new XjcRdeRegistrarAddrType();
|
|
|
|
// * A <addr> element that contains address information associated
|
|
// with the registrar. The <addr> element contains the following
|
|
// child elements:
|
|
//
|
|
// + One, two, or three OPTIONAL <street> elements that contain
|
|
// the registrar's street address.
|
|
bean.getStreets().addAll(model.getStreet());
|
|
|
|
// + A <city> element that contains the registrar's city.
|
|
bean.setCity(firstNonNull(model.getCity(), UNKNOWN_CITY));
|
|
|
|
// + An OPTIONAL <sp> element that contains the registrar's state
|
|
// or province.
|
|
bean.setSp(model.getState());
|
|
|
|
// + An OPTIONAL <pc> element that contains the registrar's
|
|
// postal code.
|
|
bean.setPc(firstNonNull(model.getZip(), UNKNOWN_ZIP));
|
|
|
|
// + A <cc> element that contains the registrar's country code.
|
|
bean.setCc(firstNonNull(model.getCountryCode(), UNKNOWN_CC));
|
|
|
|
return bean;
|
|
}
|
|
|
|
private RegistrarToXjcConverter() {}
|
|
}
|