Document StatusValue better and add per-resource restrictions

This generalizes the "LINKED can't be anywhere" idea into more
targeted restrictions.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=146158204
This commit is contained in:
cgoldfeder 2017-01-31 13:28:41 -08:00 committed by Ben McIlwain
parent 7f3941a843
commit 50c5f856a2
8 changed files with 88 additions and 26 deletions

View file

@ -243,9 +243,14 @@ public abstract class EppResource extends BackupGroupRoot implements Buildable {
/** Set this resource's status values. */
public B setStatusValues(ImmutableSet<StatusValue> statusValues) {
checkArgument(
!nullToEmpty(statusValues).contains(StatusValue.LINKED),
"LINKED is a virtual status value that should never be set on an EppResource");
Class<? extends EppResource> resourceClass = getInstance().getClass();
for (StatusValue statusValue : nullToEmpty(statusValues)) {
checkArgument(
!statusValue.isForbiddenOn(resourceClass),
"The %s status cannot be set on %s",
statusValue,
resourceClass.getSimpleName());
}
getInstance().status = statusValues;
return thisCastToDerived();
}