mv com/google/domain/registry google/registry

This change renames directories in preparation for the great package
rename. The repository is now in a broken state because the code
itself hasn't been updated. However this should ensure that git
correctly preserves history for each file.
This commit is contained in:
Justine Tunney 2016-05-13 18:55:08 -04:00
parent a41677aea1
commit 5012893c1d
2396 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,118 @@
// 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 com.google.domain.registry.model.transfer;
import com.google.domain.registry.model.Buildable.GenericBuilder;
import com.google.domain.registry.model.ImmutableObject;
import org.joda.time.DateTime;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
/** Fields common to {@link TransferData} and {@link TransferResponse}. */
@XmlTransient
public abstract class BaseTransferObject extends ImmutableObject {
/**
* The status of the current or last transfer. Can be null if never transferred. Note that we
* leave IgnoreSave off this field so that we can ensure that TransferData loaded from Objectify
* will always be non-null.
*/
@XmlElement(name = "trStatus")
TransferStatus transferStatus;
/** The gaining registrar of the current or last transfer. Can be null if never transferred. */
@XmlElement(name = "reID")
String gainingClientId;
/** The time that the last transfer was requested. Can be null if never transferred. */
@XmlElement(name = "reDate")
DateTime transferRequestTime;
/** The losing registrar of the current or last transfer. Can be null if never transferred. */
@XmlElement(name = "acID")
String losingClientId;
/**
* If the current transfer status is pending, then this holds the time that the transfer must be
* acted upon before the server will automatically approve the transfer. For all other states,
* this holds the time that the last pending transfer ended. Can be null if never transferred.
*/
@XmlElement(name = "acDate")
DateTime pendingTransferExpirationTime;
public TransferStatus getTransferStatus() {
return transferStatus;
}
public String getGainingClientId() {
return gainingClientId;
}
public DateTime getTransferRequestTime() {
return transferRequestTime;
}
public String getLosingClientId() {
return losingClientId;
}
public DateTime getPendingTransferExpirationTime() {
return pendingTransferExpirationTime;
}
/** Base class for builders of {@link BaseTransferObject} subclasses. */
public abstract static class Builder<T extends BaseTransferObject, B extends Builder<?, ?>>
extends GenericBuilder<T, B> {
/** Create a {@link Builder} wrapping a new instance. */
protected Builder() {}
/** Create a {@link Builder} wrapping the given instance. */
protected Builder(T instance) {
super(instance);
}
/** Set this resource's transfer status. */
public B setTransferStatus(TransferStatus transferStatus) {
getInstance().transferStatus = transferStatus;
return thisCastToDerived();
}
/** Set the gaining registrar for a pending transfer on this resource. */
public B setGainingClientId(String gainingClientId) {
getInstance().gainingClientId = gainingClientId;
return thisCastToDerived();
}
/** Set the time that the current transfer request was made on this resource. */
public B setTransferRequestTime(DateTime transferRequestTime) {
getInstance().transferRequestTime = transferRequestTime;
return thisCastToDerived();
}
/** Set the losing registrar for a pending transfer on this resource. */
public B setLosingClientId(String losingClientId) {
getInstance().losingClientId = losingClientId;
return thisCastToDerived();
}
/** Set the expiration time of the current pending transfer. */
public B setPendingTransferExpirationTime(DateTime pendingTransferExpirationTime) {
getInstance().pendingTransferExpirationTime = pendingTransferExpirationTime;
return thisCastToDerived();
}
}
}

View file

@ -0,0 +1,177 @@
// 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 com.google.domain.registry.model.transfer;
import static com.google.domain.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
import com.google.common.collect.ImmutableSet;
import com.google.domain.registry.model.Buildable;
import com.google.domain.registry.model.EppResource;
import com.google.domain.registry.model.billing.BillingEvent;
import com.google.domain.registry.model.eppcommon.Trid;
import com.google.domain.registry.model.poll.PollMessage;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Ref;
import com.googlecode.objectify.annotation.Embed;
import com.googlecode.objectify.annotation.IgnoreSave;
import com.googlecode.objectify.annotation.Unindex;
import com.googlecode.objectify.condition.IfNull;
import java.util.Set;
/**
* Common transfer data for {@link EppResource} types. Only applies to domains and contacts;
* hosts are implicitly transferred with their superordinate domain.
*/
@Embed
@Unindex
public class TransferData extends BaseTransferObject implements Buildable {
public static final TransferData EMPTY = new TransferData();
/**
* The billing event and poll messages associated with a server-approved transfer.
* <p>
* This field should be null if there is not currently a pending transfer or if the object being
* transferred is not a domain. If there is a pending transfer for a domain there should be a
* number of poll messages and billing events for both the gaining and losing registrars. If the
* pending transfer is explicitly approved, rejected or cancelled, the referenced entities should
* be deleted.
* <p>
* Keys are stored here instead of references to facilitate bulk deletion (the typical use case,
* as described above), since Objectify allows bulk deletion by key but not by reference.
*/
@IgnoreSave(IfNull.class)
Set<Key<? extends TransferServerApproveEntity>> serverApproveEntities;
/**
* The regular one-time billing event that will be charged for a server-approved transfer.
* <p>
* This field should be null if there is not currently a pending transfer or if the object being
* transferred is not a domain.
*/
@IgnoreSave(IfNull.class)
Ref<BillingEvent.OneTime> serverApproveBillingEvent;
/**
* The autorenew billing event that should be associated with this resource after the transfer.
* <p>
* This field should be null if there is not currently a pending transfer or if the object being
* transferred is not a domain.
*/
@IgnoreSave(IfNull.class)
Ref<BillingEvent.Recurring> serverApproveAutorenewEvent;
/**
* The autorenew poll message that should be associated with this resource after the transfer.
* <p>
* This field should be null if there is not currently a pending transfer or if the object being
* transferred is not a domain.
*/
@IgnoreSave(IfNull.class)
Ref<PollMessage.Autorenew> serverApproveAutorenewPollMessage;
/** The transaction id of the most recent transfer request (or null if there never was one). */
Trid transferRequestTrid;
/**
* The number of years to add to the registration expiration time if this transfer is approved.
* Can be null if never transferred, or for resource types where it's not applicable.
*/
Integer extendedRegistrationYears;
public ImmutableSet<Key<? extends TransferServerApproveEntity>> getServerApproveEntities() {
return nullToEmptyImmutableCopy(serverApproveEntities);
}
public Ref<BillingEvent.OneTime> getServerApproveBillingEvent() {
return serverApproveBillingEvent;
}
public Ref<BillingEvent.Recurring> getServerApproveAutorenewEvent() {
return serverApproveAutorenewEvent;
}
public Ref<PollMessage.Autorenew> getServerApproveAutorenewPollMessage() {
return serverApproveAutorenewPollMessage;
}
public Trid getTransferRequestTrid() {
return transferRequestTrid;
}
public Integer getExtendedRegistrationYears() {
return extendedRegistrationYears;
}
@Override
public Builder asBuilder() {
return new Builder(clone(this));
}
/** Builder for {@link TransferData} because it is immutable. */
public static class Builder extends BaseTransferObject.Builder<TransferData, Builder> {
/** Create a {@link Builder} wrapping a new instance. */
public Builder() {}
/** Create a {@link Builder} wrapping the given instance. */
private Builder(TransferData instance) {
super(instance);
}
public Builder setServerApproveEntities(
ImmutableSet<Key<? extends TransferServerApproveEntity>> serverApproveEntities) {
getInstance().serverApproveEntities = serverApproveEntities;
return this;
}
public Builder setServerApproveBillingEvent(
Ref<BillingEvent.OneTime> serverApproveBillingEvent) {
getInstance().serverApproveBillingEvent = serverApproveBillingEvent;
return this;
}
public Builder setServerApproveAutorenewEvent(
Ref<BillingEvent.Recurring> serverApproveAutorenewEvent) {
getInstance().serverApproveAutorenewEvent = serverApproveAutorenewEvent;
return this;
}
public Builder setServerApproveAutorenewPollMessage(
Ref<PollMessage.Autorenew> serverApproveAutorenewPollMessage) {
getInstance().serverApproveAutorenewPollMessage = serverApproveAutorenewPollMessage;
return this;
}
public Builder setTransferRequestTrid(Trid transferRequestTrid) {
getInstance().transferRequestTrid = transferRequestTrid;
return this;
}
/** Set the years to add to the registration if this transfer completes. */
public Builder setExtendedRegistrationYears(Integer extendedRegistrationYears) {
getInstance().extendedRegistrationYears = extendedRegistrationYears;
return thisCastToDerived();
}
}
/**
* Marker interface for objects that are written in anticipation of a server approval, and
* therefore need to be deleted under any other outcome.
*/
public interface TransferServerApproveEntity {}
}

View file

@ -0,0 +1,110 @@
// 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 com.google.domain.registry.model.transfer;
import com.google.domain.registry.model.EppResource;
import com.google.domain.registry.model.eppoutput.Response.ResponseData;
import com.googlecode.objectify.annotation.Embed;
import org.joda.time.DateTime;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
/**
* A response to a transfer command on a {@link EppResource}. This base class contains fields that
* are common to all transfer responses; derived classes add resource specific fields.
*/
@XmlTransient
public abstract class TransferResponse extends BaseTransferObject implements ResponseData {
/** An adapter to output the XML in response to a transfer command on a domain. */
@Embed
@XmlRootElement(name = "trnData", namespace = "urn:ietf:params:xml:ns:domain-1.0")
@XmlType(propOrder = {
"fullyQualifiedDomainName",
"transferStatus",
"gainingClientId",
"transferRequestTime",
"losingClientId",
"pendingTransferExpirationTime",
"extendedRegistrationExpirationTime"},
namespace = "urn:ietf:params:xml:ns:domain-1.0")
public static class DomainTransferResponse extends TransferResponse {
@XmlElement(name = "name")
String fullyQualifiedDomainName;
public String getFullyQualifiedDomainName() {
return fullyQualifiedDomainName;
}
/**
* The new registration expiration time that will take effect if this transfer is approved. This
* will only be set on pending or approved transfers, not on cancelled or rejected ones.
*/
@XmlElement(name = "exDate")
DateTime extendedRegistrationExpirationTime;
/** Builder for {@link DomainTransferResponse}. */
public static class Builder
extends BaseTransferObject.Builder<DomainTransferResponse, Builder> {
public Builder setFullyQualifiedDomainNameName(String fullyQualifiedDomainName) {
getInstance().fullyQualifiedDomainName = fullyQualifiedDomainName;
return this;
}
/** Set the registration expiration time that will take effect if this transfer completes. */
public Builder setExtendedRegistrationExpirationTime(
DateTime extendedRegistrationExpirationTime) {
getInstance().extendedRegistrationExpirationTime = extendedRegistrationExpirationTime;
return this;
}
}
}
/** An adapter to output the XML in response to a transfer command on a contact. */
@Embed
@XmlRootElement(name = "trnData", namespace = "urn:ietf:params:xml:ns:contact-1.0")
@XmlType(propOrder = {
"contactId",
"transferStatus",
"gainingClientId",
"transferRequestTime",
"losingClientId",
"pendingTransferExpirationTime"},
namespace = "urn:ietf:params:xml:ns:contact-1.0")
public static class ContactTransferResponse extends TransferResponse {
@XmlElement(name = "id")
String contactId;
public String getContactId() {
return contactId;
}
/** Builder for {@link ContactTransferResponse}. */
public static class Builder
extends BaseTransferObject.Builder<ContactTransferResponse, Builder> {
public Builder setContactId(String contactId) {
getInstance().contactId = contactId;
return this;
}
}
}
}

View file

@ -0,0 +1,54 @@
// 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 com.google.domain.registry.model.transfer;
import com.google.common.base.CaseFormat;
import javax.xml.bind.annotation.XmlEnumValue;
/** Represents the EPP transfer status as defined in RFC 5730. */
public enum TransferStatus {
@XmlEnumValue("clientApproved")
CLIENT_APPROVED("Transfer approved."),
@XmlEnumValue("clientCancelled")
CLIENT_CANCELLED("Transfer cancelled."),
@XmlEnumValue("clientRejected")
CLIENT_REJECTED("Transfer rejected."),
@XmlEnumValue("pending")
PENDING("Transfer requested."),
@XmlEnumValue("serverApproved")
SERVER_APPROVED("Transfer approved."),
@XmlEnumValue("serverCancelled")
SERVER_CANCELLED("Transfer cancelled.");
private final String message;
private TransferStatus(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public String getXmlName() {
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, toString());
}
}

View file

@ -0,0 +1,31 @@
// 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.
@XmlSchema(
namespace = "urn:ietf:params:xml:ns:epp-1.0",
xmlns = @XmlNs(prefix = "", namespaceURI = "urn:ietf:params:xml:ns:epp-1.0"),
elementFormDefault = XmlNsForm.QUALIFIED)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlJavaTypeAdapter(UtcDateTimeAdapter.class)
package com.google.domain.registry.model.transfer;
import com.google.domain.registry.xml.UtcDateTimeAdapter;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;