cloudservers: Issue 971 changing to immutable domain objects with builders, annotated with ConstructorProperties and Named

This commit is contained in:
Adam Lowe 2012-07-10 13:14:17 +01:00
parent 2f01337b64
commit 74f8b2d0c0
21 changed files with 1377 additions and 605 deletions

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,30 +18,109 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* Class AbsoluteLimit
*
* @author Adrian Cole
*/
*/
public class AbsoluteLimit {
protected String name;
protected int value;
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromAbsoluteLimit(this);
}
public String getName() {
return name;
}
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
public void setName(String value) {
this.name = value;
}
protected String name;
protected int value;
/**
* @see AbsoluteLimit#getName()
*/
public T name(String name) {
this.name = name;
return self();
}
public int getValue() {
return value;
}
/**
* @see AbsoluteLimit#getValue()
*/
public T value(int value) {
this.value = value;
return self();
}
public void setValue(int value) {
this.value = value;
}
public AbsoluteLimit build() {
return new AbsoluteLimit(name, value);
}
public T fromAbsoluteLimit(AbsoluteLimit in) {
return this
.name(in.getName())
.value(in.getValue());
}
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final String name;
private final int value;
@ConstructorProperties({
"name", "value"
})
protected AbsoluteLimit(String name, int value) {
this.name = checkNotNull(name, "name");
this.value = value;
}
public String getName() {
return this.name;
}
public int getValue() {
return this.value;
}
@Override
public int hashCode() {
return Objects.hashCode(name, value);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
AbsoluteLimit that = AbsoluteLimit.class.cast(obj);
return Objects.equal(this.name, that.name)
&& Objects.equal(this.value, that.value);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("name", name).add("value", value);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,81 +18,128 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Collection;
import java.util.Set;
import com.google.common.collect.Sets;
import com.google.gson.annotations.SerializedName;
import javax.inject.Named;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
/**
* Class Addresses
*
* @author Adrian Cole
*/
*/
public class Addresses {
@SerializedName("public")
private Set<String> publicAddresses = Sets.newLinkedHashSet();
@SerializedName("private")
private Set<String> privateAddresses = Sets.newLinkedHashSet();
public Addresses() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromAddresses(this);
}
public Addresses(Set<String> publicAddresses, Set<String> privateAddresses) {
this.publicAddresses = publicAddresses;
this.privateAddresses = privateAddresses;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected Set<String> publicAddresses;
protected Set<String> privateAddresses;
/**
* @see Addresses#getPublicAddresses()
*/
public T publicAddresses(Collection<String> publicAddresses) {
this.publicAddresses = ImmutableSet.copyOf(checkNotNull(publicAddresses, "publicAddresses"));
return self();
}
public T publicAddresses(String... in) {
return publicAddresses(ImmutableSet.copyOf(in));
}
/**
* @see Addresses#getPrivateAddresses()
*/
public T privateAddresses(Collection<String> privateAddresses) {
this.privateAddresses = ImmutableSet.copyOf(checkNotNull(privateAddresses, "privateAddresses"));
return self();
}
public T privateAddresses(String... in) {
return privateAddresses(ImmutableSet.copyOf(in));
}
public Addresses build() {
return new Addresses(publicAddresses, privateAddresses);
}
public T fromAddresses(Addresses in) {
return this
.publicAddresses(in.getPublicAddresses())
.privateAddresses(in.getPrivateAddresses());
}
}
public void setPublicAddresses(Set<String> publicAddresses) {
this.publicAddresses = publicAddresses;
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
@Named("public")
private final Set<String> publicAddresses;
@Named("private")
private final Set<String> privateAddresses;
@ConstructorProperties({
"public", "private"
})
protected Addresses(@Nullable Set<String> publicAddresses, @Nullable Set<String> privateAddresses) {
this.publicAddresses = publicAddresses == null ? null : ImmutableSet.copyOf(publicAddresses);
this.privateAddresses = privateAddresses == null ? null : ImmutableSet.copyOf(privateAddresses);
}
@Nullable
public Set<String> getPublicAddresses() {
return publicAddresses;
}
public void setPrivateAddresses(Set<String> privateAddresses) {
this.privateAddresses = privateAddresses;
return this.publicAddresses;
}
@Nullable
public Set<String> getPrivateAddresses() {
return privateAddresses;
}
@Override
public String toString() {
return "Addresses [privateAddresses=" + privateAddresses + ", publicAddresses="
+ publicAddresses + "]";
return this.privateAddresses;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((privateAddresses == null) ? 0 : privateAddresses.hashCode());
result = prime * result + ((publicAddresses == null) ? 0 : publicAddresses.hashCode());
return result;
return Objects.hashCode(publicAddresses, privateAddresses);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Addresses other = (Addresses) obj;
if (privateAddresses == null) {
if (other.privateAddresses != null)
return false;
} else if (!privateAddresses.equals(other.privateAddresses))
return false;
if (publicAddresses == null) {
if (other.publicAddresses != null)
return false;
} else if (!publicAddresses.equals(other.publicAddresses))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Addresses that = Addresses.class.cast(obj);
return Objects.equal(this.publicAddresses, that.publicAddresses)
&& Objects.equal(this.privateAddresses, that.privateAddresses);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("publicAddresses", publicAddresses).add("privateAddresses", privateAddresses);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,87 +18,131 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* A backup schedule can be defined to create server images at regular intervals (daily and weekly).
* Backup schedules are configurable per server.
*
* @author Adrian Cole
*/
*/
public class BackupSchedule {
protected DailyBackup daily = DailyBackup.DISABLED;
protected boolean enabled;
protected WeeklyBackup weekly = WeeklyBackup.DISABLED;
public BackupSchedule() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromBackupSchedule(this);
}
public BackupSchedule(WeeklyBackup weekly, DailyBackup daily, boolean enabled) {
this.weekly = weekly;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected DailyBackup daily;
protected boolean enabled;
protected WeeklyBackup weekly;
/**
* @see BackupSchedule#getDaily()
*/
public T daily(DailyBackup daily) {
this.daily = daily;
return self();
}
/**
* @see BackupSchedule#isEnabled()
*/
public T enabled(boolean enabled) {
this.enabled = enabled;
return self();
}
/**
* @see BackupSchedule#getWeekly()
*/
public T weekly(WeeklyBackup weekly) {
this.weekly = weekly;
return self();
}
public BackupSchedule build() {
return new BackupSchedule(daily, enabled, weekly);
}
public T fromBackupSchedule(BackupSchedule in) {
return this
.daily(in.getDaily())
.enabled(in.isEnabled())
.weekly(in.getWeekly());
}
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final DailyBackup daily;
private final boolean enabled;
private final WeeklyBackup weekly;
@ConstructorProperties({
"daily", "enabled", "weekly"
})
protected BackupSchedule(@Nullable DailyBackup daily, boolean enabled, @Nullable WeeklyBackup weekly) {
this.daily = daily;
this.enabled = enabled;
this.weekly = weekly;
}
@Nullable
public DailyBackup getDaily() {
return daily;
}
public void setDaily(DailyBackup value) {
this.daily = value;
return this.daily;
}
public boolean isEnabled() {
return enabled;
}
public void setEnabled(boolean value) {
this.enabled = value;
return this.enabled;
}
@Nullable
public WeeklyBackup getWeekly() {
return weekly;
}
public void setWeekly(WeeklyBackup value) {
this.weekly = value;
}
@Override
public String toString() {
return "[daily=" + daily + ", enabled=" + enabled + ", weekly=" + weekly + "]";
return this.weekly;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((daily == null) ? 0 : daily.hashCode());
result = prime * result + (enabled ? 1231 : 1237);
result = prime * result + ((weekly == null) ? 0 : weekly.hashCode());
return result;
return Objects.hashCode(daily, enabled, weekly);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
BackupSchedule other = (BackupSchedule) obj;
if (daily == null) {
if (other.daily != null)
return false;
} else if (!daily.equals(other.daily))
return false;
if (enabled != other.enabled)
return false;
if (weekly == null) {
if (other.weekly != null)
return false;
} else if (!weekly.equals(other.weekly))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
BackupSchedule that = BackupSchedule.class.cast(obj);
return Objects.equal(this.daily, that.daily)
&& Objects.equal(this.enabled, that.enabled)
&& Objects.equal(this.weekly, that.weekly);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("daily", daily).add("enabled", enabled).add("weekly", weekly);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,103 +18,148 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
*
* A flavor is an available hardware configuration for a server. Each flavor has a unique
* combination of disk space and memory capacity.
*
* @author Adrian Cole
*/
*/
public class Flavor {
public Flavor() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromFlavor(this);
}
@Override
public String toString() {
return "Flavor [disk=" + disk + ", id=" + id + ", name=" + name + ", ram=" + ram + "]";
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected Integer disk;
protected Integer ram;
/**
* @see Flavor#getId()
*/
public T id(int id) {
this.id = id;
return self();
}
/**
* @see Flavor#getName()
*/
public T name(String name) {
this.name = name;
return self();
}
/**
* @see Flavor#getDisk()
*/
public T disk(Integer disk) {
this.disk = disk;
return self();
}
/**
* @see Flavor#getRam()
*/
public T ram(Integer ram) {
this.ram = ram;
return self();
}
public Flavor build() {
return new Flavor(id, name, disk, ram);
}
public T fromFlavor(Flavor in) {
return this
.id(in.getId())
.name(in.getName())
.disk(in.getDisk())
.ram(in.getRam());
}
}
public Flavor(int id, String name) {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final int id;
private final String name;
private final Integer disk;
private final Integer ram;
@ConstructorProperties({
"id", "name", "disk", "ram"
})
protected Flavor(int id, String name, @Nullable Integer disk, @Nullable Integer ram) {
this.id = id;
this.name = name;
}
private int id;
private String name;
private Integer disk;
private Integer ram;
public Integer getDisk() {
return disk;
}
public void setDisk(Integer value) {
this.disk = value;
this.name = checkNotNull(name, "name");
this.disk = disk;
this.ram = ram;
}
public int getId() {
return id;
}
public void setId(int value) {
this.id = value;
return this.id;
}
public String getName() {
return name;
return this.name;
}
public void setName(String value) {
this.name = value;
@Nullable
public Integer getDisk() {
return this.disk;
}
@Nullable
public Integer getRam() {
return ram;
}
public void setRam(Integer value) {
this.ram = value;
return this.ram;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((disk == null) ? 0 : disk.hashCode());
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((ram == null) ? 0 : ram.hashCode());
return result;
return Objects.hashCode(id, name, disk, ram);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Flavor other = (Flavor) obj;
if (disk == null) {
if (other.disk != null)
return false;
} else if (!disk.equals(other.disk))
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (ram == null) {
if (other.ram != null)
return false;
} else if (!ram.equals(other.ram))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Flavor that = Flavor.class.cast(obj);
return Objects.equal(this.id, that.id)
&& Objects.equal(this.name, that.name)
&& Objects.equal(this.disk, that.disk)
&& Objects.equal(this.ram, that.ram);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("disk", disk).add("ram", ram);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,8 +18,16 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Date;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* An image is a collection of files used to create or rebuild a server. Rackspace provides a number
* of pre-built OS images by default. You may also create custom images from cloud servers you have
@ -27,119 +35,188 @@ import java.util.Date;
* if you plan to deploy a particular server configuration frequently.
*
* @author Adrian Cole
*/
*/
public class Image {
private Date created;
private int id;
private String name;
private Integer progress;
private Integer serverId;
private ImageStatus status;
private Date updated;
public Image() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromImage(this);
}
public Image(int id, String name) {
this.id = id;
this.name = name;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected Date created;
protected int id;
protected String name;
protected Integer progress;
protected Integer serverId;
protected ImageStatus status;
protected Date updated;
/**
* @see Image#getCreated()
*/
public T created(Date created) {
this.created = created;
return self();
}
/**
* @see Image#getId()
*/
public T id(int id) {
this.id = id;
return self();
}
/**
* @see Image#getName()
*/
public T name(String name) {
this.name = name;
return self();
}
/**
* @see Image#getProgress()
*/
public T progress(Integer progress) {
this.progress = progress;
return self();
}
/**
* @see Image#getServerId()
*/
public T serverId(Integer serverId) {
this.serverId = serverId;
return self();
}
/**
* @see Image#getStatus()
*/
public T status(ImageStatus status) {
this.status = status;
return self();
}
/**
* @see Image#getUpdated()
*/
public T updated(Date updated) {
this.updated = updated;
return self();
}
public Image build() {
return new Image(created, id, name, progress, serverId, status, updated);
}
public T fromImage(Image in) {
return this
.created(in.getCreated())
.id(in.getId())
.name(in.getName())
.progress(in.getProgress())
.serverId(in.getServerId())
.status(in.getStatus())
.updated(in.getUpdated());
}
}
public void setCreated(Date created) {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final Date created;
private final int id;
private final String name;
private final Integer progress;
private final Integer serverId;
private final ImageStatus status;
private final Date updated;
@ConstructorProperties({
"created", "id", "name", "progress", "serverId", "status", "updated"
})
protected Image(@Nullable Date created, int id, String name, @Nullable Integer progress, @Nullable Integer serverId, @Nullable ImageStatus status, @Nullable Date updated) {
this.created = created;
}
public Date getCreated() {
return created;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setProgress(Integer progress) {
this.name = checkNotNull(name, "name");
this.progress = progress;
}
public Integer getProgress() {
return progress;
}
public void setServerId(Integer serverId) {
this.serverId = serverId;
}
public Integer getServerId() {
return serverId;
}
public void setStatus(ImageStatus status) {
this.status = status;
}
public ImageStatus getStatus() {
return status;
}
public void setUpdated(Date updated) {
this.updated = updated;
}
public Date getUpdated() {
return updated;
@Nullable
public Date getCreated() {
return this.created;
}
/**
* note that this ignores the create time
*/
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
@Nullable
public Integer getProgress() {
return this.progress;
}
@Nullable
public Integer getServerId() {
return this.serverId;
}
@Nullable
public ImageStatus getStatus() {
return this.status;
}
@Nullable
public Date getUpdated() {
return this.updated;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((serverId == null) ? 0 : serverId.hashCode());
return result;
return Objects.hashCode(created, id, name, progress, serverId, status, updated);
}
/**
* note that this ignores the serverid and create time.
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Image other = (Image) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Image that = Image.class.cast(obj);
return Objects.equal(this.created, that.created)
&& Objects.equal(this.id, that.id)
&& Objects.equal(this.name, that.name)
&& Objects.equal(this.progress, that.progress)
&& Objects.equal(this.serverId, that.serverId)
&& Objects.equal(this.status, that.status)
&& Objects.equal(this.updated, that.updated);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("created", created).add("id", id).add("name", name).add("progress", progress).add("serverId", serverId).add("status", status).add("updated", updated);
}
@Override
public String toString() {
return "Image [created=" + created + ", id=" + id + ", name=" + name + ", serverId=" + serverId + ", status="
+ status + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,59 +18,115 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
/**
* Class Limits
*/
public class Limits {
private Set<RateLimit> rate = Sets.newLinkedHashSet();
private Map<String, Integer> absolute = Maps.newLinkedHashMap();
public Set<RateLimit> getRate() {
return rate;
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromLimits(this);
}
@Override
public String toString() {
return "Limits [rate=" + rate + ", absolute=" + absolute + "]";
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected Set<RateLimit> rate = ImmutableSet.of();
protected Map<String, Integer> absolute = ImmutableMap.of();
/**
* @see Limits#getRate()
*/
public T rate(Set<RateLimit> rate) {
this.rate = ImmutableSet.copyOf(checkNotNull(rate, "rate"));
return self();
}
public T rate(RateLimit... in) {
return rate(ImmutableSet.copyOf(in));
}
/**
* @see Limits#getAbsolute()
*/
public T absolute(Map<String, Integer> absolute) {
this.absolute = ImmutableMap.copyOf(checkNotNull(absolute, "absolute"));
return self();
}
public Limits build() {
return new Limits(rate, absolute);
}
public T fromLimits(Limits in) {
return this
.rate(in.getRate())
.absolute(in.getAbsolute());
}
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final Set<RateLimit> rate;
private final Map<String, Integer> absolute;
@ConstructorProperties({
"rate", "absolute"
})
protected Limits(Set<RateLimit> rate, Map<String, Integer> absolute) {
this.rate = ImmutableSet.copyOf(checkNotNull(rate, "rate"));
this.absolute = ImmutableMap.copyOf(checkNotNull(absolute, "absolute"));
}
public Set<RateLimit> getRate() {
return this.rate;
}
public Map<String, Integer> getAbsolute() {
return this.absolute;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((absolute == null) ? 0 : absolute.hashCode());
result = prime * result + ((rate == null) ? 0 : rate.hashCode());
return result;
return Objects.hashCode(rate, absolute);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Limits other = (Limits) obj;
if (absolute == null) {
if (other.absolute != null)
return false;
} else if (!absolute.equals(other.absolute))
return false;
if (rate == null) {
if (other.rate != null)
return false;
} else if (!rate.equals(other.rate))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Limits that = Limits.class.cast(obj);
return Objects.equal(this.rate, that.rate)
&& Objects.equal(this.absolute, that.absolute);
}
public Map<String, Integer> getAbsolute() {
return absolute;
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("rate", rate).add("absolute", absolute);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,8 +18,16 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
*
* RateLimit.
* <p/>
* we specify rate limits in terms of both a human readable wild-card URI and a machine processable
@ -34,73 +42,121 @@ package org.jclouds.cloudservers.domain;
* will be returned with a Reply-After header to notify the client when theyagain.
*
* @author Adrian Cole
*/
*/
public class RateLimit {
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((regex == null) ? 0 : regex.hashCode());
result = prime * result + remaining;
result = prime * result + (int) (resetTime ^ (resetTime >>> 32));
result = prime * result + ((unit == null) ? 0 : unit.hashCode());
result = prime * result + ((uri == null) ? 0 : uri.hashCode());
result = prime * result + value;
result = prime * result + ((verb == null) ? 0 : verb.hashCode());
return result;
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromRateLimit(this);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RateLimit other = (RateLimit) obj;
if (regex == null) {
if (other.regex != null)
return false;
} else if (!regex.equals(other.regex))
return false;
if (remaining != other.remaining)
return false;
if (resetTime != other.resetTime)
return false;
if (unit != other.unit)
return false;
if (uri == null) {
if (other.uri != null)
return false;
} else if (!uri.equals(other.uri))
return false;
if (value != other.value)
return false;
if (verb == null) {
if (other.verb != null)
return false;
} else if (!verb.equals(other.verb))
return false;
return true;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected String uri;
protected String regex;
protected int remaining;
protected long resetTime;
protected RateLimitUnit unit;
protected int value;
protected String verb;
/**
* @see RateLimit#getUri()
*/
public T uri(String uri) {
this.uri = uri;
return self();
}
/**
* @see RateLimit#getRegex()
*/
public T regex(String regex) {
this.regex = regex;
return self();
}
/**
* @see RateLimit#getRemaining()
*/
public T remaining(int remaining) {
this.remaining = remaining;
return self();
}
/**
* @see RateLimit#getResetTime()
*/
public T resetTime(long resetTime) {
this.resetTime = resetTime;
return self();
}
/**
* @see RateLimit#getUnit()
*/
public T unit(RateLimitUnit unit) {
this.unit = unit;
return self();
}
/**
* @see RateLimit#getValue()
*/
public T value(int value) {
this.value = value;
return self();
}
/**
* @see RateLimit#getVerb()
*/
public T verb(String verb) {
this.verb = verb;
return self();
}
public RateLimit build() {
return new RateLimit(uri, regex, remaining, resetTime, unit, value, verb);
}
public T fromRateLimit(RateLimit in) {
return this
.uri(in.getUri())
.regex(in.getRegex())
.remaining(in.getRemaining())
.resetTime(in.getResetTime())
.unit(in.getUnit())
.value(in.getValue())
.verb(in.getVerb());
}
}
private String uri;
private String regex;
private int remaining;
private long resetTime;
private RateLimitUnit unit;
private int value;
private String verb;
// for deserializer
public RateLimit() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public RateLimit(String uri, String regex, int remaining, long resetTime, RateLimitUnit unit, int value, String verb) {
this.uri = uri;
private final String uri;
private final String regex;
private final int remaining;
private final long resetTime;
private final RateLimitUnit unit;
private final int value;
private final String verb;
@ConstructorProperties({
"uri", "regex", "remaining", "resetTime", "unit", "value", "verb"
})
protected RateLimit(String uri, @Nullable String regex, int remaining, long resetTime, @Nullable RateLimitUnit unit,
int value, @Nullable String verb) {
this.uri = checkNotNull(uri, "uri");
this.regex = regex;
this.remaining = remaining;
this.resetTime = resetTime;
@ -110,37 +166,63 @@ public class RateLimit {
}
public String getUri() {
return uri;
return this.uri;
}
@Nullable
public String getRegex() {
return regex;
return this.regex;
}
public int getRemaining() {
return remaining;
return this.remaining;
}
public long getResetTime() {
return resetTime;
return this.resetTime;
}
@Nullable
public RateLimitUnit getUnit() {
return unit;
return this.unit;
}
public int getValue() {
return value;
return this.value;
}
@Nullable
public String getVerb() {
return verb;
return this.verb;
}
@Override
public int hashCode() {
return Objects.hashCode(uri, regex, remaining, resetTime, unit, value, verb);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
RateLimit that = RateLimit.class.cast(obj);
return Objects.equal(this.uri, that.uri)
&& Objects.equal(this.regex, that.regex)
&& Objects.equal(this.remaining, that.remaining)
&& Objects.equal(this.resetTime, that.resetTime)
&& Objects.equal(this.unit, that.unit)
&& Objects.equal(this.value, that.value)
&& Objects.equal(this.verb, that.verb);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("uri", uri).add("regex", regex).add("remaining", remaining).add("resetTime", resetTime).add("unit", unit).add("value", value).add("verb", verb);
}
@Override
public String toString() {
return "[uri=" + uri + ", regex=" + regex + ", remaining=" + remaining + ", resetTime=" + resetTime + ", unit="
+ unit + ", value=" + value + ", verb=" + verb + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,72 +18,220 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.Map;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.collect.Maps;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableMap;
/**
* A server is a virtual machine instance in the Cloud Servers system. Flavor and image are
* requisite elements when creating a server.
*
* @author Adrian Cole
*/
*/
public class Server {
private int id;
private String name;
private Map<String, String> metadata = Maps.newHashMap();
private Addresses addresses;
private String adminPass;
private Integer flavorId;
private String hostId;
private Integer imageId;
private Integer sharedIpGroupId;
private Integer progress;
private ServerStatus status;
public Server() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromServer(this);
}
public Server(int id, String name) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected Map<String, String> metadata;
protected Addresses addresses;
protected String adminPass;
protected Integer flavorId;
protected String hostId;
protected Integer imageId;
protected Integer sharedIpGroupId;
protected Integer progress;
protected ServerStatus status;
/**
* @see Server#getId()
*/
public T id(int id) {
this.id = id;
return self();
}
/**
* @see Server#getName()
*/
public T name(String name) {
this.name = name;
return self();
}
/**
* @see Server#getMetadata()
*/
public T metadata(Map<String, String> metadata) {
this.metadata = ImmutableMap.copyOf(checkNotNull(metadata, "metadata"));
return self();
}
/**
* @see Server#getAddresses()
*/
public T addresses(Addresses addresses) {
this.addresses = addresses;
return self();
}
/**
* @see Server#getAdminPass()
*/
public T adminPass(String adminPass) {
this.adminPass = adminPass;
return self();
}
/**
* @see Server#getFlavorId()
*/
public T flavorId(Integer flavorId) {
this.flavorId = flavorId;
return self();
}
/**
* @see Server#getHostId()
*/
public T hostId(String hostId) {
this.hostId = hostId;
return self();
}
/**
* @see Server#getImageId()
*/
public T imageId(Integer imageId) {
this.imageId = imageId;
return self();
}
/**
* @see Server#getSharedIpGroupId()
*/
public T sharedIpGroupId(Integer sharedIpGroupId) {
this.sharedIpGroupId = sharedIpGroupId;
return self();
}
/**
* @see Server#getProgress()
*/
public T progress(Integer progress) {
this.progress = progress;
return self();
}
/**
* @see Server#getStatus()
*/
public T status(ServerStatus status) {
this.status = status;
return self();
}
public Server build() {
return new Server(id, name, metadata, addresses, adminPass, flavorId, hostId, imageId, sharedIpGroupId, progress, status);
}
public T fromServer(Server in) {
return this
.id(in.getId())
.name(in.getName())
.metadata(in.getMetadata())
.addresses(in.getAddresses())
.adminPass(in.getAdminPass())
.flavorId(in.getFlavorId())
.hostId(in.getHostId())
.imageId(in.getImageId())
.sharedIpGroupId(in.getSharedIpGroupId())
.progress(in.getProgress())
.status(in.getStatus());
}
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final int id;
private final String name;
private final Map<String, String> metadata;
private final Addresses addresses;
private final String adminPass;
private final Integer flavorId;
private final String hostId;
private final Integer imageId;
private final Integer sharedIpGroupId;
private final Integer progress;
private final ServerStatus status;
@ConstructorProperties({
"id", "name", "metadata", "addresses", "adminPass", "flavorId", "hostId", "imageId", "sharedIpGroupId", "progress", "status"
})
protected Server(int id, String name, @Nullable Map<String, String> metadata, @Nullable Addresses addresses,
@Nullable String adminPass, @Nullable Integer flavorId, @Nullable String hostId, @Nullable Integer imageId,
@Nullable Integer sharedIpGroupId, @Nullable Integer progress, @Nullable ServerStatus status) {
this.id = id;
this.name = name;
}
public void setMetadata(Map<String, String> metadata) {
this.metadata = metadata;
}
public Map<String, String> getMetadata() {
return metadata;
}
public void setAddresses(Addresses addresses) {
this.name = checkNotNull(name, "name");
this.metadata = metadata == null ? null : ImmutableMap.copyOf(metadata);
this.addresses = addresses;
}
public Addresses getAddresses() {
return addresses;
}
public void setAdminPass(String adminPass) {
this.adminPass = adminPass;
}
public String getAdminPass() {
return adminPass;
}
public void setFlavorId(Integer flavorId) {
this.flavorId = flavorId;
}
public Integer getFlavorId() {
return flavorId;
}
public void setHostId(String hostId) {
this.hostId = hostId;
this.imageId = imageId;
this.sharedIpGroupId = sharedIpGroupId;
this.progress = progress;
this.status = status == null ? ServerStatus.UNKNOWN : status;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
@Nullable
public Map<String, String> getMetadata() {
return this.metadata;
}
@Nullable
public Addresses getAddresses() {
return this.addresses;
}
@Nullable
public String getAdminPass() {
return this.adminPass;
}
@Nullable
public Integer getFlavorId() {
return this.flavorId;
}
/**
@ -94,48 +242,24 @@ public class Server {
* <p/>
* Note: hostId is unique PER ACCOUNT and is not globally unique.
*/
@Nullable
public String getHostId() {
return hostId;
}
public int getId() {
return id;
}
public void setImageId(Integer imageId) {
this.imageId = imageId;
return this.hostId;
}
@Nullable
public Integer getImageId() {
return imageId;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setProgress(Integer progress) {
this.progress = progress;
}
public Integer getProgress() {
return progress;
}
public void setSharedIpGroupId(Integer sharedIpGroupId) {
this.sharedIpGroupId = sharedIpGroupId;
return this.imageId;
}
@Nullable
public Integer getSharedIpGroupId() {
return sharedIpGroupId;
return this.sharedIpGroupId;
}
public void setStatus(ServerStatus status) {
this.status = status;
@Nullable
public Integer getProgress() {
return this.progress;
}
/**
@ -143,13 +267,12 @@ public class Server {
* state. Servers with an ACTIVE status are available for use.
*/
public ServerStatus getStatus() {
return status;
return this.status;
}
@Override
public int hashCode() {
return Objects.hashCode(id, name);
return Objects.hashCode(id, name, metadata, addresses, adminPass, flavorId, hostId, imageId, sharedIpGroupId);
}
@Override
@ -157,21 +280,25 @@ public class Server {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Server that = Server.class.cast(obj);
return Objects.equal(this.getId(), that.getId())
&& Objects.equal(this.name, that.name);
return Objects.equal(this.id, that.id)
&& Objects.equal(this.name, that.name)
&& Objects.equal(this.metadata, that.metadata)
&& Objects.equal(this.addresses, that.addresses)
&& Objects.equal(this.adminPass, that.adminPass)
&& Objects.equal(this.flavorId, that.flavorId)
&& Objects.equal(this.hostId, that.hostId)
&& Objects.equal(this.imageId, that.imageId)
&& Objects.equal(this.sharedIpGroupId, that.sharedIpGroupId);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("metadata", metadata).add("addresses", addresses).add("adminPass", adminPass).add("flavorId", flavorId).add("hostId", hostId).add("imageId", imageId).add("sharedIpGroupId", sharedIpGroupId).add("progress", progress).add("status", status);
}
@Override
public String toString() {
return Objects.toStringHelper("")
.add("id", getId())
.add("name", name)
.add("addresses", addresses)
.add("flavorId", flavorId)
.add("imageId", imageId)
.add("hostId", hostId)
.add("metadata", metadata)
.add("sharedIpGroupId", sharedIpGroupId).toString();
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,25 +18,105 @@
*/
package org.jclouds.cloudservers.domain;
import java.beans.ConstructorProperties;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* Class ShareIp
*/
public class ShareIp {
private boolean configureServer;
private int sharedIpGroupId;
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromShareIp(this);
}
public void setConfigureServer(boolean configureServer) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected boolean configureServer;
protected int sharedIpGroupId;
/**
* @see ShareIp#isConfigureServer()
*/
public T configureServer(boolean configureServer) {
this.configureServer = configureServer;
return self();
}
/**
* @see ShareIp#getSharedIpGroupId()
*/
public T sharedIpGroupId(int sharedIpGroupId) {
this.sharedIpGroupId = sharedIpGroupId;
return self();
}
public ShareIp build() {
return new ShareIp(configureServer, sharedIpGroupId);
}
public T fromShareIp(ShareIp in) {
return this
.configureServer(in.isConfigureServer())
.sharedIpGroupId(in.getSharedIpGroupId());
}
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final boolean configureServer;
private final int sharedIpGroupId;
@ConstructorProperties({
"configureServer", "sharedIpGroupId"
})
protected ShareIp(boolean configureServer, int sharedIpGroupId) {
this.configureServer = configureServer;
}
public boolean isConfigureServer() {
return configureServer;
}
public void setSharedIpGroupId(int sharedIpGroupId) {
this.sharedIpGroupId = sharedIpGroupId;
}
public boolean isConfigureServer() {
return this.configureServer;
}
public int getSharedIpGroupId() {
return sharedIpGroupId;
return this.sharedIpGroupId;
}
@Override
public int hashCode() {
return Objects.hashCode(configureServer, sharedIpGroupId);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ShareIp that = ShareIp.class.cast(obj);
return Objects.equal(this.configureServer, that.configureServer)
&& Objects.equal(this.sharedIpGroupId, that.sharedIpGroupId);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("configureServer", configureServer).add("sharedIpGroupId", sharedIpGroupId);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,9 +18,16 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import java.util.List;
import com.google.common.collect.Lists;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableList;
/**
* A shared IP group is a collection of servers that can share IPs with other members of the group.
@ -29,83 +36,120 @@ import com.google.common.collect.Lists;
* groups. A server may only be a member of one shared IP group.
*
* @author Adrian Cole
*/
*/
public class SharedIpGroup {
private int id;
private String name;
private List<Integer> servers = Lists.newArrayList();
public SharedIpGroup() {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromSharedIpGroup(this);
}
public SharedIpGroup(int id, String name) {
this.id = id;
this.name = name;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected List<Integer> servers = null;
/**
* @see SharedIpGroup#getId()
*/
public T id(int id) {
this.id = id;
return self();
}
/**
* @see SharedIpGroup#getName()
*/
public T name(String name) {
this.name = name;
return self();
}
/**
* @see SharedIpGroup#getServers()
*/
public T servers(List<Integer> servers) {
this.servers = ImmutableList.copyOf(checkNotNull(servers, "servers"));
return self();
}
public T servers(Integer... in) {
return servers(ImmutableList.copyOf(in));
}
public SharedIpGroup build() {
return new SharedIpGroup(id, name, servers);
}
public T fromSharedIpGroup(SharedIpGroup in) {
return this
.id(in.getId())
.name(in.getName())
.servers(in.getServers());
}
}
public void setId(int id) {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final int id;
private final String name;
private final List<Integer> servers;
@ConstructorProperties({
"id", "name", "servers"
})
protected SharedIpGroup(int id, String name, @Nullable List<Integer> servers) {
this.id = id;
this.name = checkNotNull(name, "name");
this.servers = servers == null ? null : ImmutableList.copyOf(servers);
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
return this.id;
}
public String getName() {
return name;
}
public void setServers(List<Integer> servers) {
this.servers = servers;
return this.name;
}
@Nullable
public List<Integer> getServers() {
return servers;
return this.servers;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((servers == null) ? 0 : servers.hashCode());
return result;
return Objects.hashCode(id, name, servers);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SharedIpGroup other = (SharedIpGroup) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (servers == null) {
if (other.servers != null)
return false;
} else if (!servers.equals(other.servers))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
SharedIpGroup that = SharedIpGroup.class.cast(obj);
return Objects.equal(this.id, that.id)
&& Objects.equal(this.name, that.name)
&& Objects.equal(this.servers, that.servers);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("servers", servers);
}
@Override
public String toString() {
return "SharedIpGroup [id=" + id + ", name=" + name + ", servers=" + servers + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,42 +18,144 @@
*/
package org.jclouds.cloudservers.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* Class Version
*/
public class Version {
private String docURL;
private String id = "v1.0";
private VersionStatus status;
private String wadl;
public void setDocURL(String docURL) {
this.docURL = docURL;
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromVersion(this);
}
public String getDocURL() {
return docURL;
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected String docURL;
protected String id;
protected VersionStatus status;
protected String wadl;
/**
* @see Version#getDocURL()
*/
public T docURL(String docURL) {
this.docURL = docURL;
return self();
}
/**
* @see Version#getId()
*/
public T id(String id) {
this.id = id;
return self();
}
/**
* @see Version#getStatus()
*/
public T status(VersionStatus status) {
this.status = status;
return self();
}
/**
* @see Version#getWadl()
*/
public T wadl(String wadl) {
this.wadl = wadl;
return self();
}
public Version build() {
return new Version(docURL, id, status, wadl);
}
public T fromVersion(Version in) {
return this
.docURL(in.getDocURL())
.id(in.getId())
.status(in.getStatus())
.wadl(in.getWadl());
}
}
public void setId(String id) {
this.id = id;
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public String getId() {
return id;
}
private final String docURL;
private final String id;
private final VersionStatus status;
private final String wadl;
public void setStatus(VersionStatus status) {
this.status = status;
}
public VersionStatus getStatus() {
return status;
}
public void setWadl(String wadl) {
@ConstructorProperties({
"docURL", "id", "status", "wadl"
})
protected Version(String docURL, String id, @Nullable VersionStatus status, @Nullable String wadl) {
this.docURL = checkNotNull(docURL, "docURL");
this.id = checkNotNull(id, "id");
this.status = status == null ? VersionStatus.UNRECOGNIZED : status;
this.wadl = wadl;
}
public String getWadl() {
return wadl;
public String getDocURL() {
return this.docURL;
}
public String getId() {
return this.id;
}
public VersionStatus getStatus() {
return this.status;
}
@Nullable
public String getWadl() {
return this.wadl;
}
@Override
public int hashCode() {
return Objects.hashCode(docURL, id, status, wadl);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Version that = Version.class.cast(obj);
return Objects.equal(this.docURL, that.docURL)
&& Objects.equal(this.id, that.id)
&& Objects.equal(this.status, that.status)
&& Objects.equal(this.wadl, that.wadl);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("docURL", docURL).add("id", id).add("status", status).add("wadl", wadl);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -35,6 +35,7 @@ import org.jclouds.rest.MapBinder;
import org.jclouds.rest.binders.BindToJsonPayload;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@ -105,9 +106,7 @@ public class CreateServerOptions implements MapBinder {
if (sharedIpGroupId != null)
server.sharedIpGroupId = this.sharedIpGroupId;
if (publicIp != null) {
server.addresses = new Addresses();
server.addresses.getPublicAddresses().add(publicIp);
server.addresses.setPrivateAddresses(null);
server.addresses = Addresses.builder().publicAddresses(ImmutableSet.of(publicIp)).build();
}
return bindToRequest(request, ImmutableMap.of("server", server));
}

View File

@ -502,8 +502,8 @@ public class CloudServersAsyncClientTest extends BaseAsyncClientTest<CloudServer
public void testReplaceBackupSchedule() throws IOException, SecurityException, NoSuchMethodException {
Method method = CloudServersAsyncClient.class.getMethod("replaceBackupSchedule", int.class, BackupSchedule.class);
HttpRequest request = processor.createRequest(method, 2, new BackupSchedule(WeeklyBackup.MONDAY,
DailyBackup.H_0800_1000, true));
HttpRequest request = processor.createRequest(method, 2, BackupSchedule.builder().weekly(WeeklyBackup.MONDAY)
.daily(DailyBackup.H_0800_1000).enabled(true).build());
assertRequestLineEquals(request, "POST https://lon.servers.api.rackspacecloud.com/v1.0/10001786/servers/2/backup_schedule HTTP/1.1");
assertNonPayloadHeadersEqual(request, "");

View File

@ -503,11 +503,8 @@ public class CloudServersClientLiveTest extends BaseComputeServiceContextLiveTes
@Test(timeOut = 10 * 60 * 1000, dependsOnMethods = "testShareNoConfig")
public void testBackup() throws Exception {
assertEquals(new BackupSchedule(), client.getBackupSchedule(serverId));
BackupSchedule dailyWeekly = new BackupSchedule();
dailyWeekly.setEnabled(true);
dailyWeekly.setWeekly(WeeklyBackup.FRIDAY);
dailyWeekly.setDaily(DailyBackup.H_0400_0600);
assertEquals(BackupSchedule.builder().build(), client.getBackupSchedule(serverId));
BackupSchedule dailyWeekly = BackupSchedule.builder().enabled(true).weekly(WeeklyBackup.FRIDAY).daily(DailyBackup.H_0400_0600).build();
client.replaceBackupSchedule(serverId, dailyWeekly);
client.deleteBackupSchedule(serverId);
// disables, doesn't delete: Web Hosting #119571

View File

@ -30,18 +30,14 @@ import org.testng.annotations.Test;
@Test(groups = "unit")
public class ServerTest {
public void testStatusDoesntAffectEquals() {
Server server1 = new Server(1, "hello");
server1.setStatus(ServerStatus.ACTIVE);
Server server2 = new Server(1, "hello");
server2.setStatus(ServerStatus.BUILD);
Server server1 = Server.builder().id(1).name("hello").status(ServerStatus.ACTIVE).build();
Server server2 = Server.builder().id(1).name("hello").status(ServerStatus.BUILD).build();
assertEquals(server1, server2);
}
public void testProgressDoesntAffectEquals() {
Server server1 = new Server(1, "hello");
server1.setProgress(1);
Server server2 = new Server(1, "hello");
server2.setProgress(2);
Server server1 = Server.builder().id(1).name("hello").progress(1).build();
Server server2 = Server.builder().id(1).name("hello").progress(2).build();
assertEquals(server1, server2);
}

View File

@ -52,7 +52,7 @@ public class ParseBackupScheduleFromJsonResponseTest {
.get(new TypeLiteral<UnwrapOnlyJsonValue<BackupSchedule>>() {
}));
BackupSchedule response = parser.apply(HttpResponse.builder().statusCode(200).message("ok").payload(is).build());
assertEquals(new BackupSchedule(WeeklyBackup.THURSDAY, DailyBackup.H_0400_0600, true), response);
assertEquals(BackupSchedule.builder().weekly(WeeklyBackup.THURSDAY).daily(DailyBackup.H_0400_0600).enabled(true).build(), response);
}
public void testNoSchedule() throws UnknownHostException {
@ -63,6 +63,6 @@ public class ParseBackupScheduleFromJsonResponseTest {
BackupSchedule response = parser.apply(HttpResponse.builder()
.statusCode(200).message("ok")
.payload("{\"backupSchedule\":{\"enabled\" : false}}").build());
assertEquals(new BackupSchedule(), response);
assertEquals(BackupSchedule.builder().build(), response);
}
}

View File

@ -49,7 +49,8 @@ public class ParseFlavorListFromJsonResponseTest {
public void testApplyInputStream() {
InputStream is = getClass().getResourceAsStream("/test_list_flavors.json");
List<Flavor> expects = ImmutableList.of(new Flavor(1, "256 MB Server"), new Flavor(2, "512 MB Server"));
List<Flavor> expects = ImmutableList.of(Flavor.builder().id(1).name("256 MB Server").build(),
Flavor.builder().id(2).name("512 MB Server").build());
UnwrapOnlyJsonValue<List<Flavor>> parser = i.getInstance(Key
.get(new TypeLiteral<UnwrapOnlyJsonValue<List<Flavor>>>() {

View File

@ -61,7 +61,8 @@ public class ParseImageListFromJsonResponseTest {
public void testApplyInputStream() {
InputStream is = getClass().getResourceAsStream("/test_list_images.json");
List<Image> expects = ImmutableList.of(new Image(2, "CentOS 5.2"), new Image(743, "My Server Backup"));
List<Image> expects = ImmutableList.of(Image.builder().id(2).name("CentOS 5.2").build(),
Image.builder().id(743).name("My Server Backup").build());
UnwrapOnlyJsonValue<List<Image>> parser = i.getInstance(Key
.get(new TypeLiteral<UnwrapOnlyJsonValue<List<Image>>>() {

View File

@ -59,9 +59,7 @@ public class ParseServerFromJsonResponseTest {
assertEquals(response.getProgress(), Integer.valueOf(60));
List<String> publicAddresses = Lists.newArrayList("67.23.10.132", "67.23.10.131");
List<String> privateAddresses = Lists.newArrayList("10.176.42.16");
Addresses addresses1 = new Addresses();
addresses1.getPrivateAddresses().addAll(privateAddresses);
addresses1.getPublicAddresses().addAll(publicAddresses);
Addresses addresses1 = Addresses.builder().publicAddresses(publicAddresses).privateAddresses(privateAddresses).build();
assertEquals(response.getAddresses(), addresses1);
assertEquals(response.getMetadata(), ImmutableMap.of("Server Label", "Web Head 1", "Image Version", "2.1"));

View File

@ -53,7 +53,8 @@ public class ParseServerListFromJsonResponseTest {
public void testApplyInputStream() {
InputStream is = getClass().getResourceAsStream("/test_list_servers.json");
List<Server> expects = ImmutableList.of(new Server(1234, "sample-server"), new Server(5678, "sample-server2"));
List<Server> expects = ImmutableList.of(Server.builder().id(1234).name("sample-server").build(),
Server.builder().id(5678).name("sample-server2").build());
UnwrapOnlyJsonValue<List<Server>> parser = i.getInstance(Key
.get(new TypeLiteral<UnwrapOnlyJsonValue<List<Server>>>() {
@ -80,9 +81,7 @@ public class ParseServerListFromJsonResponseTest {
assertEquals(response.get(0).getProgress(), Integer.valueOf(60));
List<String> publicAddresses = Lists.newArrayList("67.23.10.132", "67.23.10.131");
List<String> privateAddresses = Lists.newArrayList("10.176.42.16");
Addresses addresses1 = new Addresses();
addresses1.getPrivateAddresses().addAll(privateAddresses);
addresses1.getPublicAddresses().addAll(publicAddresses);
Addresses addresses1 = Addresses.builder().privateAddresses(privateAddresses).publicAddresses(publicAddresses).build();
assertEquals(response.get(0).getAddresses(), addresses1);
assertEquals(response.get(0).getMetadata(), ImmutableMap.of("Server Label", "Web Head 1", "Image Version", "2.1"));
assertEquals(response.get(1).getId(), 5678);
@ -94,9 +93,7 @@ public class ParseServerListFromJsonResponseTest {
assertEquals(response.get(1).getProgress(), null);
List<String> publicAddresses2 = Lists.newArrayList("67.23.10.133");
List<String> privateAddresses2 = Lists.newArrayList("10.176.42.17");
Addresses addresses2 = new Addresses();
addresses2.getPrivateAddresses().addAll(privateAddresses2);
addresses2.getPublicAddresses().addAll(publicAddresses2);
Addresses addresses2 = Addresses.builder().privateAddresses(privateAddresses2).publicAddresses(publicAddresses2).build();
assertEquals(response.get(1).getAddresses(), addresses2);
assertEquals(response.get(1).getMetadata(), ImmutableMap.of("Server Label", "DB 1"));

View File

@ -49,8 +49,8 @@ public class ParseSharedIpGroupListFromJsonResponseTest {
public void testApplyInputStream() {
InputStream is = getClass().getResourceAsStream("/test_list_sharedipgroups.json");
List<SharedIpGroup> expects = ImmutableList.of(new SharedIpGroup(1234, "Shared IP Group 1"), new SharedIpGroup(
5678, "Shared IP Group 2"));
List<SharedIpGroup> expects = ImmutableList.of(SharedIpGroup.builder().id(1234).name("Shared IP Group 1").build(),
SharedIpGroup.builder().id(5678).name("Shared IP Group 2").build());
UnwrapOnlyJsonValue<List<SharedIpGroup>> parser = i.getInstance(Key
.get(new TypeLiteral<UnwrapOnlyJsonValue<List<SharedIpGroup>>>() {