diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/AllowedArgumentsForCreateServer.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/AllowedArgumentsForCreateServer.java
index 8769902833..8c17e9babc 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/AllowedArgumentsForCreateServer.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/AllowedArgumentsForCreateServer.java
@@ -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
@@ -20,12 +20,12 @@ package org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
+import java.beans.ConstructorProperties;
import java.util.Set;
-import com.google.common.base.Joiner;
import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
-import com.google.gson.annotations.SerializedName;
/**
* Sets the allowed arguments for some of the functions in this module such as disksize, cpucores etc.
@@ -34,79 +34,104 @@ import com.google.gson.annotations.SerializedName;
* @see
*/
public class AllowedArgumentsForCreateServer {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private Set diskSizes;
- private Set memorySizes;
- private Set cpuCores;
- private Set templates;
- private Set transfers;
- private Set dataCenters;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromAllowedArgumentsForCreateServer(this);
+ }
- public Builder diskSizes(Integer... sizes) {
- return diskSizes(ImmutableSet.copyOf(sizes));
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected Set diskSizes = ImmutableSet.of();
+ protected Set memorySizes = ImmutableSet.of();
+ protected Set cpuCores = ImmutableSet.of();
+ protected Set templates = ImmutableSet.of();
+ protected Set transfers = ImmutableSet.of();
+ protected Set dataCenters = ImmutableSet.of();
+
+ /**
+ * @see AllowedArgumentsForCreateServer#getDiskSizesInGB()
+ */
+ public T diskSizes(Set diskSizes) {
+ this.diskSizes = ImmutableSet.copyOf(checkNotNull(diskSizes, "diskSizesInGB"));
+ return self();
}
- public Builder diskSizes(Set sizes) {
- this.diskSizes = sizes;
- return this;
+ public T diskSizes(Integer... in) {
+ return diskSizes(ImmutableSet.copyOf(in));
}
- public Builder memorySizes(Integer... sizes) {
- return memorySizes(ImmutableSet.copyOf(sizes));
+ /**
+ * @see AllowedArgumentsForCreateServer#getMemorySizesInMB()
+ */
+ public T memorySizes(Set memorySizes) {
+ this.memorySizes = ImmutableSet.copyOf(checkNotNull(memorySizes, "memorySizesInMB"));
+ return self();
}
- public Builder memorySizes(Set sizes) {
- this.memorySizes = sizes;
- return this;
+ public T memorySizes(Integer... in) {
+ return memorySizes(ImmutableSet.copyOf(in));
}
- public Builder cpuCores(Integer... cpuCores) {
- this.cpuCores = ImmutableSet.copyOf(cpuCores);
- return this;
+ /**
+ * @see AllowedArgumentsForCreateServer#getCpuCoreOptions()
+ */
+ public T cpuCores(Set cpuCores) {
+ this.cpuCores = ImmutableSet.copyOf(checkNotNull(cpuCores, "cpuCoreOptions"));
+ return self();
}
- public Builder cpuCores(Set cpuCores) {
- this.cpuCores = cpuCores;
- return this;
+ public T cpuCores(Integer... in) {
+ return cpuCores(ImmutableSet.copyOf(in));
}
- public Builder templates(String... templates) {
- return templates(ImmutableSet.copyOf(templates));
+ /**
+ * @see AllowedArgumentsForCreateServer#getTemplateNames()
+ */
+ public T templates(Set templates) {
+ this.templates = ImmutableSet.copyOf(checkNotNull(templates, "templateNames"));
+ return self();
}
- public Builder templates(Set templates) {
- this.templates = templates;
- return this;
+ public T templates(String... in) {
+ return templates(ImmutableSet.copyOf(in));
}
- public Builder transfers(Integer... transfers) {
- return transfers(ImmutableSet.copyOf(transfers));
+ /**
+ * @see AllowedArgumentsForCreateServer#getTransfersInGB()
+ */
+ public T transfers(Set transfers) {
+ this.transfers = ImmutableSet.copyOf(checkNotNull(transfers, "transfersInGB"));
+ return self();
}
- public Builder transfers(Set transfers) {
- this.transfers = transfers;
- return this;
+ public T transfers(Integer... in) {
+ return transfers(ImmutableSet.copyOf(in));
}
- public Builder dataCenters(String... dataCenters) {
- return dataCenters(ImmutableSet.copyOf(dataCenters));
+ /**
+ * @see AllowedArgumentsForCreateServer#getDataCenters()
+ */
+ public T dataCenters(Set dataCenters) {
+ this.dataCenters = ImmutableSet.copyOf(checkNotNull(dataCenters, "dataCenters"));
+ return self();
}
- public Builder dataCenters(Set dataCenters) {
- this.dataCenters = dataCenters;
- return this;
+ public T dataCenters(String... in) {
+ return dataCenters(ImmutableSet.copyOf(in));
}
public AllowedArgumentsForCreateServer build() {
return new AllowedArgumentsForCreateServer(diskSizes, memorySizes, cpuCores, templates, transfers, dataCenters);
}
- public Builder fromAllowedArguments(AllowedArgumentsForCreateServer in) {
- return diskSizes(in.getDiskSizesInGB())
+ public T fromAllowedArgumentsForCreateServer(AllowedArgumentsForCreateServer in) {
+ return this
+ .diskSizes(in.getDiskSizesInGB())
.memorySizes(in.getMemorySizesInMB())
.cpuCores(in.getCpuCoreOptions())
.templates(in.getTemplateNames())
@@ -115,34 +140,30 @@ public class AllowedArgumentsForCreateServer {
}
}
- @SerializedName("disksize")
- private final Set diskSizes;
- @SerializedName("memorysize")
- private final Set memorySizes;
- @SerializedName("cpucores")
- private final Set cpuCores;
- @SerializedName("template")
- private final Set templates;
- @SerializedName("transfer")
- private final Set transfers;
- @SerializedName("datacenter")
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
+
+ private final Set diskSizesInGB;
+ private final Set memorySizesInMB;
+ private final Set cpuCoreOptions;
+ private final Set templateNames;
+ private final Set transfersInGB;
private final Set dataCenters;
- public AllowedArgumentsForCreateServer(Set diskSizes, Set memorySizes, Set cpuCores,
- Set templates, Set transfers, Set dataCenters) {
- checkNotNull(diskSizes, "diskSizes");
- checkNotNull(memorySizes, "memorySizes");
- checkNotNull(cpuCores, "cpuCores");
- checkNotNull(templates, "templates");
- checkNotNull(transfers, "transfers");
- checkNotNull(dataCenters, "dataCenters");
-
- this.diskSizes = diskSizes;
- this.memorySizes = memorySizes;
- this.cpuCores = cpuCores;
- this.templates = templates;
- this.transfers = transfers;
- this.dataCenters = dataCenters;
+ @ConstructorProperties({
+ "disksize", "memorysize", "cpucores", "template", "transfer", "datacenter"
+ })
+ protected AllowedArgumentsForCreateServer(Set diskSizesInGB, Set memorySizesInMB, Set cpuCoreOptions, Set templateNames, Set transfersInGB, Set dataCenters) {
+ this.diskSizesInGB = ImmutableSet.copyOf(checkNotNull(diskSizesInGB, "diskSizesInGB"));
+ this.memorySizesInMB = ImmutableSet.copyOf(checkNotNull(memorySizesInMB, "memorySizesInMB"));
+ this.cpuCoreOptions = ImmutableSet.copyOf(checkNotNull(cpuCoreOptions, "cpuCoreOptions"));
+ this.templateNames = ImmutableSet.copyOf(checkNotNull(templateNames, "templateNames"));
+ this.transfersInGB = ImmutableSet.copyOf(checkNotNull(transfersInGB, "transfersInGB"));
+ this.dataCenters = ImmutableSet.copyOf(checkNotNull(dataCenters, "dataCenters"));
}
/**
@@ -150,82 +171,73 @@ public class AllowedArgumentsForCreateServer {
* @see org.jclouds.glesys.domain.OSTemplate#getMinDiskSize()
*/
public Set getDiskSizesInGB() {
- return diskSizes;
+ return this.diskSizesInGB;
}
/**
* @return a list of memory sizes, in MB, that can be used for creating servers on this platform
- * @see org.jclouds.glesys.domain.OSTemplate#getMinMemSize()
+ * @see org.jclouds.glesys.domain.OSTemplate#getMinMemSize()
*/
public Set getMemorySizesInMB() {
- return memorySizes;
+ return this.memorySizesInMB;
}
/**
* @return a list of which core counts can be used for creating servers on this platform
*/
public Set getCpuCoreOptions() {
- return cpuCores;
+ return this.cpuCoreOptions;
}
/**
* @return a list of template names available for creating servers on this platform
- * @see org.jclouds.glesys.domain.OSTemplate#getName()
+ * @see org.jclouds.glesys.domain.OSTemplate#getName()
*/
public Set getTemplateNames() {
- return templates;
+ return this.templateNames;
}
/**
* @return the list of transfer settings available for creating servers on this platform
*/
public Set getTransfersInGB() {
- return transfers;
+ return this.transfersInGB;
}
/**
* @return the list of datacenters available that support creating servers on this platform
*/
public Set getDataCenters() {
- return dataCenters;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof AllowedArgumentsForCreateServer) {
- final AllowedArgumentsForCreateServer other = (AllowedArgumentsForCreateServer) object;
- return Objects.equal(diskSizes, other.diskSizes)
- && Objects.equal(memorySizes, other.memorySizes)
- && Objects.equal(cpuCores, other.cpuCores)
- && Objects.equal(templates, other.templates)
- && Objects.equal(transfers, other.transfers)
- && Objects.equal(dataCenters, other.dataCenters);
- } else {
- return false;
- }
+ return this.dataCenters;
}
@Override
public int hashCode() {
- return Objects.hashCode(diskSizes, memorySizes, cpuCores, templates, transfers, dataCenters);
+ return Objects.hashCode(diskSizesInGB, memorySizesInMB, cpuCoreOptions, templateNames, transfersInGB, dataCenters);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ AllowedArgumentsForCreateServer that = AllowedArgumentsForCreateServer.class.cast(obj);
+ return Objects.equal(this.diskSizesInGB, that.diskSizesInGB)
+ && Objects.equal(this.memorySizesInMB, that.memorySizesInMB)
+ && Objects.equal(this.cpuCoreOptions, that.cpuCoreOptions)
+ && Objects.equal(this.templateNames, that.templateNames)
+ && Objects.equal(this.transfersInGB, that.transfersInGB)
+ && Objects.equal(this.dataCenters, that.dataCenters);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("diskSizesInGB", diskSizesInGB).add("memorySizesInMB", memorySizesInMB)
+ .add("cpuCoreOptions", cpuCoreOptions).add("templateNames", templateNames)
+ .add("transfersInGB", transfersInGB).add("dataCenters", dataCenters);
}
@Override
public String toString() {
- checkNotNull(diskSizes, "diskSizes");
- checkNotNull(memorySizes, "memorySizes");
- checkNotNull(cpuCores, "cpuCores");
- checkNotNull(templates, "templates");
- checkNotNull(transfers, "transfers");
- checkNotNull(dataCenters, "dataCenters");
-
- Joiner commaJoiner = Joiner.on(", ");
- return String.format("[disksize=[%s], memorysize=[%s], cpuCores=[%s], templates=[%s], transfers=[%s], datacenters=[%s]]",
- commaJoiner.join(diskSizes), commaJoiner.join(memorySizes), commaJoiner.join(cpuCores), commaJoiner.join(templates),
- commaJoiner.join(transfers), commaJoiner.join(dataCenters));
+ return string().toString();
}
-}
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Archive.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Archive.java
index cfbb059b87..a3cf7ed83d 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Archive.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Archive.java
@@ -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,12 @@
*/
package org.jclouds.glesys.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Information about an archive
@@ -27,102 +31,143 @@ import com.google.gson.annotations.SerializedName;
* @author Adam Lowe
* @see
*/
-public class Archive implements Comparable {
- public static Builder builder() {
- return new Builder();
+public class Archive {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromArchive(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
protected String username;
protected String totalSize;
protected String freeSize;
protected boolean locked;
- public Builder username(String username) {
- this.username = username;
- return this;
+ /**
+ * @see Archive#getUsername()
+ */
+ public T username(String username) {
+ this.username = checkNotNull(username, "username");
+ return self();
}
- public Builder totalSize(String totalSize) {
- this.totalSize = totalSize;
- return this;
+ /**
+ * @see Archive#getTotalSize()
+ */
+ public T totalSize(String totalSize) {
+ this.totalSize = checkNotNull(totalSize, "totalSize");
+ return self();
}
- public Builder freeSize(String freeSize) {
- this.freeSize = freeSize;
- return this;
+ /**
+ * @see Archive#getFreeSize()
+ */
+ public T freeSize(String freeSize) {
+ this.freeSize = checkNotNull(freeSize, "freeSize");
+ return self();
}
- public Builder locked(boolean locked) {
+ /**
+ * @see Archive#isLocked()
+ */
+ public T locked(boolean locked) {
this.locked = locked;
- return this;
+ return self();
}
public Archive build() {
- return new Archive(username, totalSize, freeSize, locked);
+ return new Archive(username, totalSize, freeSize, new GleSYSBoolean(locked));
}
- public Builder fromArchive(Archive in) {
- return username(in.getUsername()).totalSize(in.getTotalSize()).freeSize(in.getFreeSize()).locked(in.isLocked());
+ public T fromArchive(Archive in) {
+ return this
+ .username(in.getUsername())
+ .totalSize(in.getTotalSize())
+ .freeSize(in.getFreeSize())
+ .locked(in.isLocked());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
private final String username;
- @SerializedName("size_total")
private final String totalSize;
- @SerializedName("size_free")
private final String freeSize;
private final boolean locked;
- /** @return the name (username) of the archive */
+ @ConstructorProperties({
+ "username", "sizetotal", "sizefree", "locked"
+ })
+ protected Archive(String username, String totalSize, String freeSize, GleSYSBoolean locked) {
+ this.username = checkNotNull(username, "username");
+ this.totalSize = checkNotNull(totalSize, "totalSize");
+ this.freeSize = checkNotNull(freeSize, "freeSize");
+ this.locked = checkNotNull(locked, "locked").getValue();
+ }
+
+ /**
+ * @return the name (username) of the archive
+ */
public String getUsername() {
- return username;
+ return this.username;
}
- /** @return the total size of the archive, ex. "10 GB" */
+ /**
+ * @return the total size of the archive, ex. "10 GB"
+ */
public String getTotalSize() {
- return totalSize;
+ return this.totalSize;
}
- /** @return the free space left of the archive */
+ /**
+ * @return the free space left of the archive
+ */
public String getFreeSize() {
- return freeSize;
+ return this.freeSize;
}
- /** @return true if the archive is locked */
+ /**
+ * @return true if the archive is locked
+ */
public boolean isLocked() {
- return locked;
- }
-
- public Archive(String username, String totalSize, String freeSize, boolean locked) {
- this.username = username;
- this.totalSize = totalSize;
- this.freeSize = freeSize;
- this.locked = locked;
+ return this.locked;
}
@Override
public int hashCode() {
- return Objects.hashCode(username);
+ return Objects.hashCode(username, totalSize, freeSize, locked);
}
- @Override
- public int compareTo(Archive other) {
- return username.compareTo(other.getUsername());
- }
-
@Override
public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- return obj instanceof Archive
- && Objects.equal(username, ((Archive) obj).username);
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Archive that = Archive.class.cast(obj);
+ return Objects.equal(this.username, that.username)
+ && Objects.equal(this.totalSize, that.totalSize)
+ && Objects.equal(this.freeSize, that.freeSize)
+ && Objects.equal(this.locked, that.locked);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("username", username).add("totalSize", totalSize).add("freeSize", freeSize).add("locked", locked);
}
@Override
public String toString() {
- return String.format("[username=%s, totalSize=%s, freeSize=%s, locked=%b]", username, totalSize, freeSize, locked);
+ return string().toString();
}
-}
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ArchiveAllowedArguments.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ArchiveAllowedArguments.java
index 8cdb47bdde..15a0150484 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ArchiveAllowedArguments.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ArchiveAllowedArguments.java
@@ -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,14 +18,14 @@
*/
package org.jclouds.glesys.domain;
-import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkNotNull;
-import java.util.Arrays;
+import java.beans.ConstructorProperties;
import java.util.List;
-import com.google.common.base.Joiner;
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.ImmutableList;
/**
* The allowed arguments for archive manipulation, such as archivesize
@@ -34,53 +34,62 @@ import com.google.gson.annotations.SerializedName;
* @see
*/
public class ArchiveAllowedArguments {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private List archiveSizes;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromArchiveAllowedArguments(this);
+ }
- public Builder archiveSizes(List archiveSizes) {
- this.archiveSizes = archiveSizes;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected List archiveSizes = ImmutableList.of();
+
+ /**
+ * @see ArchiveAllowedArguments#getArchiveSizes()
+ */
+ public T archiveSizes(List archiveSizes) {
+ this.archiveSizes = ImmutableList.copyOf(checkNotNull(archiveSizes, "archiveSizes"));
+ return self();
}
- public Builder archiveSizes(Integer... archiveSizes) {
- return archiveSizes(Arrays.asList(archiveSizes));
+ public T archiveSizes(Integer... in) {
+ return archiveSizes(ImmutableList.copyOf(in));
}
public ArchiveAllowedArguments build() {
return new ArchiveAllowedArguments(archiveSizes);
}
-
- public Builder fromArchiveAllowedArguments(ArchiveAllowedArguments in) {
- return archiveSizes(in.getArchiveSizes());
+
+ public T fromArchiveAllowedArguments(ArchiveAllowedArguments in) {
+ return this.archiveSizes(in.getArchiveSizes());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
- @SerializedName("archivesize")
private final List archiveSizes;
- public ArchiveAllowedArguments(List archiveSizes) {
- checkArgument(archiveSizes != null, "archiveSizes");
- this.archiveSizes = archiveSizes;
+ @ConstructorProperties({
+ "archivesize"
+ })
+ protected ArchiveAllowedArguments(List archiveSizes) {
+ this.archiveSizes = ImmutableList.copyOf(checkNotNull(archiveSizes, "archiveSizes"));
}
/**
* @return the list of allowed archive sizes, in GB
*/
public List getArchiveSizes() {
- return archiveSizes;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- return object instanceof ArchiveAllowedArguments
- && Objects.equal(archiveSizes, ((ArchiveAllowedArguments) object).archiveSizes);
+ return this.archiveSizes;
}
@Override
@@ -89,10 +98,21 @@ public class ArchiveAllowedArguments {
}
@Override
- public String toString() {
- Joiner commaJoiner = Joiner.on(", ");
- return String.format(
- "[archiveSizes=[%s]]", commaJoiner.join(archiveSizes));
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ArchiveAllowedArguments that = ArchiveAllowedArguments.class.cast(obj);
+ return Objects.equal(this.archiveSizes, that.archiveSizes);
}
-}
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("archiveSizes", archiveSizes);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Console.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Console.java
index ddcddf856d..851abc337d 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Console.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Console.java
@@ -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,7 +18,12 @@
*/
package org.jclouds.glesys.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;
/**
* Connection information to connect to a server with VNC.
@@ -27,44 +32,69 @@ import com.google.common.base.Objects;
* @see
*/
public class Console {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String host;
- private int port;
- private String protocol;
- private String password;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromConsole(this);
+ }
- public Builder host(String host) {
- this.host = host;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String host;
+ protected int port;
+ protected String protocol;
+ protected String password;
+
+ /**
+ * @see Console#getHost()
+ */
+ public T host(String host) {
+ this.host = checkNotNull(host, "host");
+ return self();
}
- public Builder port(int port) {
+ /**
+ * @see Console#getPort()
+ */
+ public T port(int port) {
this.port = port;
- return this;
+ return self();
}
- public Builder password(String password) {
- this.password = password;
- return this;
+ /**
+ * @see Console#getProtocol()
+ */
+ public T protocol(String protocol) {
+ this.protocol = checkNotNull(protocol, "protocol");
+ return self();
}
- public Builder protocol(String protocol) {
- this.protocol = protocol;
- return this;
+ /**
+ * @see Console#getPassword()
+ */
+ public T password(String password) {
+ this.password = checkNotNull(password, "password");
+ return self();
}
public Console build() {
return new Console(host, port, protocol, password);
}
-
- public Builder fromConsole(Console in) {
- return host(in.getHost()).port(in.getPort()).password(in.getPassword()).protocol(in.getProtocol());
- }
+ public T fromConsole(Console in) {
+ return this.host(in.getHost()).port(in.getPort()).protocol(in.getProtocol()).password(in.getPassword());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
}
private final String host;
@@ -72,54 +102,42 @@ public class Console {
private final String protocol;
private final String password;
- public Console(String host, int port, String protocol, String password) {
- this.host = host;
+ @ConstructorProperties({
+ "host", "port", "protocol", "password"
+ })
+ protected Console(String host, int port, String protocol, String password) {
+ this.host = checkNotNull(host, "host");
this.port = port;
- this.protocol = protocol;
- this.password = password;
+ this.protocol = checkNotNull(protocol, "protocol");
+ this.password = checkNotNull(password, "password");
}
/**
* @return the host name to use to connect to the server
*/
public String getHost() {
- return host;
+ return this.host;
}
/**
* @return the port to use to connect to the server
*/
public int getPort() {
- return port;
+ return this.port;
}
/**
* @return the protocol to use to connect to the server
*/
public String getProtocol() {
- return protocol;
+ return this.protocol;
}
-
+
/**
* @return the password to use to connect to the server
*/
public String getPassword() {
- return password;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof Console) {
- final Console other = (Console) object;
- return Objects.equal(host, other.host)
- && Objects.equal(port, other.port)
- && Objects.equal(protocol, other.protocol);
- } else {
- return false;
- }
+ return this.password;
}
@Override
@@ -128,8 +146,23 @@ public class Console {
}
@Override
- public String toString() {
- return String.format("[host=%s, port=%s, protocol=%s, password=%s]", host, port, protocol, password);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Console that = Console.class.cast(obj);
+ return Objects.equal(this.host, that.host)
+ && Objects.equal(this.port, that.port)
+ && Objects.equal(this.protocol, that.protocol);
}
-}
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("host", host).add("port", port).add("protocol", protocol)
+ .add("password", password);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Cost.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Cost.java
index 8f5af3ce41..a868d4d574 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Cost.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Cost.java
@@ -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
@@ -20,8 +20,10 @@ package org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
+import java.beans.ConstructorProperties;
+
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* The Cost class contains information about the cost of a server
@@ -30,84 +32,94 @@ import com.google.gson.annotations.SerializedName;
* @see ServerDetails
*/
public class Cost {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private double amount;
- private String currency;
- private String timePeriod;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromCost(this);
+ }
- public Builder amount(double amount) {
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected double amount;
+ protected String currency;
+ protected String timePeriod;
+
+ /**
+ * @see Cost#getAmount()
+ */
+ public T amount(double amount) {
this.amount = amount;
- return this;
+ return self();
}
- public Builder currency(String currency) {
- this.currency = currency;
- return this;
+ /**
+ * @see Cost#getCurrency()
+ */
+ public T currency(String currency) {
+ this.currency = checkNotNull(currency, "currency");
+ return self();
}
- public Builder timePeriod(String timePeriod) {
- this.timePeriod = timePeriod;
- return this;
+ /**
+ * @see Cost#getTimePeriod()
+ */
+ public T timePeriod(String timePeriod) {
+ this.timePeriod = checkNotNull(timePeriod, "timePeriod");
+ return self();
}
public Cost build() {
return new Cost(amount, currency, timePeriod);
}
- public Builder fromCost(Cost cost) {
- return amount(cost.getAmount()).currency(cost.getCurrency()).timePeriod(cost.getTimePeriod());
+ public T fromCost(Cost in) {
+ return this.amount(in.getAmount()).currency(in.getCurrency()).timePeriod(in.getTimePeriod());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
private final double amount;
private final String currency;
- @SerializedName("timeperiod")
private final String timePeriod;
- public Cost(double amount, String currency, String timePeriod) {
+ @ConstructorProperties({
+ "amount", "currency", "timeperiod"
+ })
+ protected Cost(double amount, String currency, String timePeriod) {
this.amount = amount;
this.currency = checkNotNull(currency, "currency");
- this.timePeriod = timePeriod;
+ this.timePeriod = checkNotNull(timePeriod, "timePeriod");
}
/**
* @return the numeric cost in #currency / #timePeriod
*/
public double getAmount() {
- return amount;
+ return this.amount;
}
/**
* @return the currency unit, e.g. "EUR" for Euro
*/
public String getCurrency() {
- return currency;
+ return this.currency;
}
/**
* @return the time period for which this cost charged, e.g. "month"
*/
public String getTimePeriod() {
- return timePeriod;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof Cost) {
- Cost other = (Cost) object;
- return Objects.equal(amount, other.amount)
- && Objects.equal(currency, other.currency)
- && Objects.equal(timePeriod, other.timePeriod);
- } else {
- return false;
- }
+ return this.timePeriod;
}
@Override
@@ -116,8 +128,22 @@ public class Cost {
}
@Override
- public String toString() {
- return String.format(
- "[amount=%f, currency=%s, timePeriod=%s]", amount, currency, timePeriod);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Cost that = Cost.class.cast(obj);
+ return Objects.equal(this.amount, that.amount)
+ && Objects.equal(this.currency, that.currency)
+ && Objects.equal(this.timePeriod, that.timePeriod);
}
-}
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("amount", amount).add("currency", currency).add("timePeriod", timePeriod);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Domain.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Domain.java
index 3335c2730a..c98e521e5b 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Domain.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Domain.java
@@ -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,10 +18,15 @@
*/
package org.jclouds.glesys.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.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Domain data for a Glesys account.
@@ -29,80 +34,253 @@ import com.google.gson.annotations.SerializedName;
* @author Adam Lowe
* @see
*/
-public class Domain implements Comparable {
- public static Builder builder() {
- return new Builder();
+public class Domain {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String domainName;
- private Date createTime;
- private int recordCount;
- private boolean useGlesysNameServer;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromDomain(this);
+ }
- public Builder domainName(String domainName) {
- this.domainName = domainName;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String domainName;
+ protected Date createTime;
+ protected int recordCount;
+ protected boolean useGlesysNameServer;
+ protected String primaryNameServer;
+ protected String responsiblePerson;
+ protected int ttl;
+ protected int refresh;
+ protected int retry;
+ protected int expire;
+ protected int minimum;
+
+ /**
+ * @see Domain#getDomainName()
+ */
+ public T domainName(String domainName) {
+ this.domainName = checkNotNull(domainName, "domainName");
+ return self();
}
- public Builder createTime(Date createTime) {
+ /**
+ * @see Domain#getCreateTime()
+ */
+ public T createTime(Date createTime) {
this.createTime = createTime;
- return this;
+ return self();
}
- public Builder recordCount(int recordCount) {
+ /**
+ * @see Domain#getRecordCount()
+ */
+ public T recordCount(int recordCount) {
this.recordCount = recordCount;
- return this;
+ return self();
}
- public Builder useGlesysNameServer(boolean useGlesysNameServer) {
+ /**
+ * @see Domain#isUseGlesysNameServer()
+ */
+ public T useGlesysNameServer(boolean useGlesysNameServer) {
this.useGlesysNameServer = useGlesysNameServer;
- return this;
+ return self();
+ }
+
+ /**
+ * @see Domain#getPrimaryNameServer()
+ */
+ public T primaryNameServer(String primaryNameServer) {
+ this.primaryNameServer = primaryNameServer;
+ return self();
+ }
+
+ /**
+ * @see Domain#getResponsiblePerson()
+ */
+ public T responsiblePerson(String responsiblePerson) {
+ this.responsiblePerson = responsiblePerson;
+ return self();
+ }
+
+ /**
+ * @see Domain#getTtl()
+ */
+ public T ttl(int ttl) {
+ this.ttl = ttl;
+ return self();
+ }
+
+ /**
+ * @see Domain#getRefresh()
+ */
+ public T refresh(int refresh) {
+ this.refresh = refresh;
+ return self();
+ }
+
+ /**
+ * @see Domain#getRetry()
+ */
+ public T retry(int retry) {
+ this.retry = retry;
+ return self();
+ }
+
+ /**
+ * @see Domain#getExpire()
+ */
+ public T expire(int expire) {
+ this.expire = expire;
+ return self();
+ }
+
+ /**
+ * @see Domain#getMinimum()
+ */
+ public T minimum(int minimum) {
+ this.minimum = minimum;
+ return self();
}
public Domain build() {
- return new Domain(domainName, createTime, recordCount, useGlesysNameServer);
+ return new Domain(domainName, createTime, recordCount, new GleSYSBoolean(useGlesysNameServer), primaryNameServer, responsiblePerson, ttl, refresh, retry, expire, minimum);
}
- public Builder fromDomain(Domain in) {
- return new Builder().domainName(in.getDomainName()).createTime(in.getCreateTime()).recordCount(in.getRecordCount()).useGlesysNameServer(in.isGlesysNameServer());
+ public T fromDomain(Domain in) {
+ return this.domainName(in.getDomainName())
+ .createTime(in.getCreateTime())
+ .recordCount(in.getRecordCount())
+ .useGlesysNameServer(in.isUseGlesysNameServer())
+ .primaryNameServer(in.getPrimaryNameServer())
+ .responsiblePerson(in.getResponsiblePerson())
+ .ttl(in.getTtl())
+ .refresh(in.getRefresh())
+ .retry(in.getRetry())
+ .expire(in.getExpire());
}
}
- @SerializedName("domainname")
- private final String domainName;
- @SerializedName("createtime")
- private final Date createTime;
- @SerializedName("recordcount")
- private final int recordCount;
- @SerializedName("usingglesysnameserver")
- private final boolean useGlesysNameServer;
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
- public Domain(String domainName, Date createTime, int recordCount, boolean useGlesysNameServer) {
- this.domainName = domainName;
+ private final String domainName;
+ private final Date createTime;
+ private final int recordCount;
+ private final boolean useGlesysNameServer;
+ private final String primaryNameServer;
+ private final String responsiblePerson;
+ private final int ttl;
+ private final int refresh;
+ private final int retry;
+ private final int expire;
+ private final int minimum;
+
+ @ConstructorProperties({
+ "domainname", "createtime", "recordcount", "usingglesysnameserver", "primarynameserver", "responsibleperson",
+ "ttl", "refresh", "retry", "expire", "minimum"
+ })
+ protected Domain(String domainName, @Nullable Date createTime, int recordCount, GleSYSBoolean useGlesysNameServer,
+ @Nullable String primaryNameServer, @Nullable String responsiblePerson,
+ int ttl, int refresh, int retry, int expire, int minimum) {
+ this.domainName = checkNotNull(domainName, "domainName");
this.createTime = createTime;
this.recordCount = recordCount;
- this.useGlesysNameServer = useGlesysNameServer;
+ this.useGlesysNameServer = checkNotNull(useGlesysNameServer, "useGlesysNameServer").getValue();
+ this.primaryNameServer = primaryNameServer;
+ this.responsiblePerson = responsiblePerson;
+ this.ttl = ttl;
+ this.refresh = refresh;
+ this.retry = retry;
+ this.expire = expire;
+ this.minimum = minimum;
}
- /** @return the domain name, ex. "jclouds.org" */
+ /**
+ * @return the domain name, ex. "jclouds.org"
+ */
public String getDomainName() {
- return domainName;
+ return this.domainName;
}
- /** @return the date the domain was registered with GleSYS */
+ /**
+ * @return the date the domain was registered with GleSYS
+ */
public Date getCreateTime() {
- return createTime;
+ return this.createTime;
}
- /** @return the number of DNS records for this domain */
+ /**
+ * @return the number of DNS records for this domain
+ */
public int getRecordCount() {
- return recordCount;
+ return this.recordCount;
}
- /** @return true if a GleSYS nameserver holds the records */
- public boolean isGlesysNameServer() {
- return useGlesysNameServer;
+ /**
+ * @return true if a GleSYS nameserver holds the records
+ */
+ public boolean isUseGlesysNameServer() {
+ return this.useGlesysNameServer;
+ }
+
+ @Nullable
+ public String getPrimaryNameServer() {
+ return primaryNameServer;
+ }
+
+ /**
+ * The E-mail address of the person responsible for this domain (reformatted with '.' at end).
+ */
+ @Nullable
+ public String getResponsiblePerson() {
+ return responsiblePerson;
+ }
+
+ /**
+ * TTL (time to live). The number of seconds a domain name is cached locally before expiration and return to authoritative nameServers for updates
+ */
+ public int getTtl() {
+ return ttl;
+ }
+
+ /**
+ * The number of seconds between update requests from secondary and slave name servers
+ */
+ public int getRefresh() {
+ return refresh;
+ }
+
+
+ /**
+ * The number of seconds the secondary/slave will wait before retrying when the last attempt failed
+ */
+ public int getRetry() {
+ return retry;
+ }
+
+ /**
+ * The number of seconds a master or slave will wait before considering the data stale if it cannot reach the primary name server
+ */
+ public int getExpire() {
+ return expire;
+ }
+
+ /**
+ * The minimum/default TTL if the domain does not specify ttl
+ *
+ * @see #getTtl()
+ */
+ public int getMinimum() {
+ return minimum;
}
@Override
@@ -111,25 +289,21 @@ public class Domain implements Comparable {
}
@Override
- public int compareTo(Domain other) {
- return domainName.compareTo(other.getDomainName());
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Domain that = Domain.class.cast(obj);
+ return Objects.equal(this.domainName, that.domainName);
}
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof Domain) {
- return Objects.equal(domainName, ((Domain) object).domainName);
- } else {
- return false;
- }
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("domainName", domainName).add("createTime", createTime).add("recordCount", recordCount).add("useGlesysNameServer", useGlesysNameServer);
}
@Override
public String toString() {
- return String.format("[domainname=%s, createtime=%s, count=%d, useglesysnameserver=%b]", domainName, createTime, recordCount, useGlesysNameServer);
+ return string().toString();
}
}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/DomainRecord.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/DomainRecord.java
index dd3b92cf9f..7e3a6e4fb2 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/DomainRecord.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/DomainRecord.java
@@ -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,7 +18,14 @@
*/
package org.jclouds.glesys.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;
/**
* DNS record data.
@@ -26,55 +33,92 @@ import com.google.common.base.Objects;
* @author Adam Lowe
* @see
*/
-public class DomainRecord implements Comparable {
- public static Builder builder() {
- return new Builder();
+public class DomainRecord {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String id;
- private String domainname;
- private String host;
- private String type;
- private String data;
- private int ttl;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromDomainRecord(this);
+ }
- public Builder id(String id) {
- this.id = id;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String id;
+ protected String domainname;
+ protected String host;
+ protected String type;
+ protected String data;
+ protected int ttl;
+
+ /**
+ * @see DomainRecord#getId()
+ */
+ public T id(String id) {
+ this.id = checkNotNull(id, "id");
+ return self();
}
- public Builder domainname(String domainname) {
- this.domainname = domainname;
- return this;
+ /**
+ * @see DomainRecord#getDomainname()
+ */
+ public T domainname(String domainname) {
+ this.domainname = checkNotNull(domainname, "domainname");
+ return self();
}
- public Builder host(String host) {
- this.host = host;
- return this;
+ /**
+ * @see DomainRecord#getHost()
+ */
+ public T host(String host) {
+ this.host = checkNotNull(host, "host");
+ return self();
}
- public Builder type(String type) {
- this.type = type;
- return this;
+ /**
+ * @see DomainRecord#getType()
+ */
+ public T type(String type) {
+ this.type = checkNotNull(type, "type");
+ return self();
}
- public Builder data(String data) {
- this.data = data;
- return this;
+ /**
+ * @see DomainRecord#getData()
+ */
+ public T data(String data) {
+ this.data = checkNotNull(data, "data");
+ return self();
}
- public Builder ttl(int ttl) {
+ /**
+ * @see DomainRecord#getTtl()
+ */
+ public T ttl(int ttl) {
this.ttl = ttl;
- return this;
+ return self();
}
public DomainRecord build() {
return new DomainRecord(id, domainname, host, type, data, ttl);
}
- public Builder fromDomainRecord(DomainRecord in) {
- return new Builder().id(in.getId()).domainname(in.getDomainName()).host(in.getHost()).type(in.getType()).data(in.getData()).ttl(in.getTtl());
+ public T fromDomainRecord(DomainRecord in) {
+ return this.id(in.getId())
+ .domainname(in.getDomainname())
+ .host(in.getHost())
+ .type(in.getType())
+ .data(in.getData())
+ .ttl(in.getTtl());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
@@ -85,11 +129,14 @@ public class DomainRecord implements Comparable {
private final String data;
private final int ttl;
- public DomainRecord(String id, String domainname, String host, String type, String data, int ttl) {
+ @ConstructorProperties({
+ "recordid", "domainname", "host", "type", "data", "ttl"
+ })
+ protected DomainRecord(@Nullable String id, String domainname, String host, String type, @Nullable String data, int ttl) {
this.id = id;
- this.domainname = domainname;
- this.host = host;
- this.type = type;
+ this.domainname = checkNotNull(domainname, "domainname");
+ this.host = checkNotNull(host, "host");
+ this.type = checkNotNull(type, "type");
this.data = data;
this.ttl = ttl;
}
@@ -99,47 +146,43 @@ public class DomainRecord implements Comparable {
* @see org.jclouds.glesys.features.DomainClient
*/
public String getId() {
- return id;
+ return this.id;
}
/**
* @return the zone content of the record
*/
- public String getDomainName() {
- return domainname;
+ public String getDomainname() {
+ return this.domainname;
}
/**
* @return the host content of the record
*/
public String getHost() {
- return host;
+ return this.host;
}
/**
* @return the type of the record, ex. "A"
*/
public String getType() {
- return type;
+ return this.type;
}
/**
* @return the data content of the record
*/
+ @Nullable
public String getData() {
- return data;
+ return this.data;
}
/**
* @return the TTL/Time-to-live for the record
*/
public int getTtl() {
- return ttl;
- }
-
- @Override
- public int compareTo(DomainRecord other) {
- return id.compareTo(other.getId());
+ return this.ttl;
}
@Override
@@ -148,21 +191,22 @@ public class DomainRecord implements Comparable {
}
@Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof DomainRecord) {
- DomainRecord other = (DomainRecord) object;
- return Objects.equal(id, other.id);
- } else {
- return false;
- }
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ DomainRecord that = DomainRecord.class.cast(obj);
+ return Objects.equal(this.id, that.id);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("id", id).add("domainname", domainname).add("host", host).add("type", type).add("data", data)
+ .add("ttl", ttl);
}
@Override
public String toString() {
- return String.format("[id=%s, domainname=%s, host=%s, type=%s, data=%s, ttl=%d]", id, domainname, host, type, data, ttl);
+ return string().toString();
}
}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAccount.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAccount.java
index 54472a02c4..3642ff4715 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAccount.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAccount.java
@@ -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,205 +18,253 @@
*/
package org.jclouds.glesys.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.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Detailed information on an Email Account
- *
+ *
* @author Adam Lowe
* @see
*/
-public class EmailAccount implements Comparable {
- public static Builder builder() {
- return new Builder();
+public class EmailAccount {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String account;
- private String quota;
- private String usedQuota;
- private int antispamLevel;
- private boolean antiVirus;
- private boolean autoRespond;
- private String autoRespondMessage;
- private boolean autoRespondSaveEmail;
- private Date created;
- private Date modified;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailAccount(this);
+ }
- public Builder account(String account) {
- this.account = account;
- return this;
- }
-
- public Builder quota(String quota) {
- this.quota = quota;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String account;
+ protected EmailQuota quota;
+ protected int antispamLevel;
+ protected boolean antiVirus;
+ protected boolean autoRespond;
+ protected String autoRespondMessage;
+ protected boolean autoRespondSaveEmail;
+ protected Date created;
+ protected Date modified;
+
+ /**
+ * @see EmailAccount#getAccount()
+ */
+ public T account(String account) {
+ this.account = checkNotNull(account, "account");
+ return self();
}
- public Builder usedQuota(String usedQuota) {
- this.usedQuota = usedQuota;
- return this;
+ /**
+ * @see EmailAccount#getQuota()
+ */
+ public T quota(EmailQuota quota) {
+ this.quota = checkNotNull(quota, "quota");
+ return self();
}
-
- public Builder antispamLevel(int antispamLevel) {
+
+ /**
+ * @see EmailAccount#getAntispamLevel()
+ */
+ public T antispamLevel(int antispamLevel) {
this.antispamLevel = antispamLevel;
- return this;
+ return self();
}
- public Builder antiVirus(boolean antiVirus) {
+ /**
+ * @see EmailAccount#isAntiVirus()
+ */
+ public T antiVirus(boolean antiVirus) {
this.antiVirus = antiVirus;
- return this;
+ return self();
}
-
- public Builder autoRespond(boolean autoRespond) {
+
+ /**
+ * @see EmailAccount#isAutoRespond()
+ */
+ public T autoRespond(boolean autoRespond) {
this.autoRespond = autoRespond;
- return this;
- }
-
- public Builder autoRespondMessage(String autoRespondMessage) {
- this.autoRespondMessage = autoRespondMessage;
- return this;
+ return self();
}
- public Builder autoRespondSaveEmail(boolean autoRespondSaveEmail) {
+ /**
+ * @see EmailAccount#getAutoRespondMessage()
+ */
+ public T autoRespondMessage(String autoRespondMessage) {
+ this.autoRespondMessage = checkNotNull(autoRespondMessage, "autoRespondMessage");
+ return self();
+ }
+
+ /**
+ * @see EmailAccount#isAutoRespondSaveEmail()
+ */
+ public T autoRespondSaveEmail(boolean autoRespondSaveEmail) {
this.autoRespondSaveEmail = autoRespondSaveEmail;
- return this;
+ return self();
}
- public Builder created(Date created) {
- this.created = created;
- return this;
+ /**
+ * @see EmailAccount#getCreated()
+ */
+ public T created(Date created) {
+ this.created = checkNotNull(created, "created");
+ return self();
}
- public Builder modified(Date modified) {
- this.modified = modified;
- return this;
+ /**
+ * @see EmailAccount#getModified()
+ */
+ public T modified(Date modified) {
+ this.modified = checkNotNull(modified, "modified");
+ return self();
}
public EmailAccount build() {
- return new EmailAccount(account, quota, usedQuota, antispamLevel, antiVirus, autoRespond, autoRespondMessage,
- autoRespondSaveEmail, created, modified);
+ return new EmailAccount(account, quota, antispamLevel, new GleSYSBoolean(antiVirus), new GleSYSBoolean(autoRespond), autoRespondMessage, new GleSYSBoolean(autoRespondSaveEmail), created, modified);
}
- public Builder fromEmail(EmailAccount in) {
- return account(in.getAccount()).quota(in.getQuota()).usedQuota(in.getUsedQuota()).antispamLevel(in.getAntispamLevel()).
- antiVirus(in.getAntiVirus()).autoRespond(in.getAutoRespond()).autoRespondMessage(in.getAutoRespondMessage()).
- autoRespondSaveEmail(in.getAutoRespondSaveEmail()).created(in.getCreated()).modified(in.getModified());
+ public T fromEmailAccount(EmailAccount in) {
+ return this.account(in.getAccount())
+ .quota(in.getQuota())
+ .antispamLevel(in.getAntispamLevel())
+ .antiVirus(in.isAntiVirus())
+ .autoRespond(in.isAutoRespond())
+ .autoRespondMessage(in.getAutoRespondMessage())
+ .autoRespondSaveEmail(in.isAutoRespondSaveEmail())
+ .created(in.getCreated())
+ .modified(in.getModified());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
- @SerializedName("emailaccount")
private final String account;
- private final String quota;
- @SerializedName("usedquota")
- private final String usedQuota;
- @SerializedName("antispamlevel")
+ private final EmailQuota quota;
private final int antispamLevel;
- @SerializedName("antivirus")
private final boolean antiVirus;
- @SerializedName("autorespond")
private final boolean autoRespond;
- @SerializedName("autorespondmessage")
private final String autoRespondMessage;
- @SerializedName("autorespondsaveemail")
private final boolean autoRespondSaveEmail;
private final Date created;
private final Date modified;
- public EmailAccount(String account, String quota, String usedQuota, int antispamLevel, boolean antiVirus, boolean autoRespond, String autoRespondMessage, boolean autoRespondSaveEmail, Date created, Date modified) {
- this.account = account;
- this.quota = quota;
- this.usedQuota = usedQuota;
+ @ConstructorProperties({
+ "emailaccount", "quota", "usedquota", "antispamlevel", "antivirus", "autorespond", "autorespondmessage", "autorespondsaveemail", "created", "modified"
+ })
+ protected EmailAccount(String account, EmailQuota quota, int antispamLevel,
+ GleSYSBoolean antiVirus, GleSYSBoolean autoRespond, @Nullable String autoRespondMessage,
+ GleSYSBoolean autoRespondSaveEmail, Date created, @Nullable Date modified) {
+ this.account = checkNotNull(account, "account");
+ this.quota = checkNotNull(quota, "quota");
this.antispamLevel = antispamLevel;
- this.antiVirus = antiVirus;
- this.autoRespond = autoRespond;
+ this.antiVirus = checkNotNull(antiVirus, "antiVirus").getValue();
+ this.autoRespond = checkNotNull(autoRespond, "autoRespond").getValue();
this.autoRespondMessage = autoRespondMessage;
- this.autoRespondSaveEmail = autoRespondSaveEmail;
- this.created = created;
+ this.autoRespondSaveEmail = checkNotNull(autoRespondSaveEmail, "autoRespondSaveEmail").getValue();
+ this.created = checkNotNull(created, "created");
this.modified = modified;
}
- /** @return the e-mail address for this e-mail account */
+ /**
+ * @return the e-mail address for this e-mail account
+ */
public String getAccount() {
- return account;
+ return this.account;
}
- /** @return the quota for this e-mail account */
- public String getQuota() {
- return quota;
+ /**
+ * @return the quota for this e-mail account
+ */
+ public EmailQuota getQuota() {
+ return this.quota;
}
- /** @return the amount of quota currently in use */
- public String getUsedQuota() {
- return usedQuota;
- }
-
- /** @return the antispam level of the e-mail account */
+ /**
+ * @return the antispam level of the e-mail account
+ */
public int getAntispamLevel() {
- return antispamLevel;
+ return this.antispamLevel;
}
- /** @return true if antivirus is enabled for this e-mail account */
- public boolean getAntiVirus() {
- return antiVirus;
+ /**
+ * @return true if antivirus is enabled for this e-mail account
+ */
+ public boolean isAntiVirus() {
+ return this.antiVirus;
}
- /** @return true if auto-respond is enabled for this e-mail account */
- public boolean getAutoRespond() {
- return autoRespond;
+ /**
+ * @return true if auto-respond is enabled for this e-mail account
+ */
+ public boolean isAutoRespond() {
+ return this.autoRespond;
}
-
+ /**
+ * @return the auto-respond message for this e-mail account
+ */
+ @Nullable
public String getAutoRespondMessage() {
- return autoRespondMessage;
+ return this.autoRespondMessage;
}
- /** @return true if saving is enabled for auto-respond e-mails */
- public boolean getAutoRespondSaveEmail() {
- return autoRespondSaveEmail;
+ /**
+ * @return true if saving is enabled for auto-respond e-mails
+ */
+ public boolean isAutoRespondSaveEmail() {
+ return this.autoRespondSaveEmail;
}
- /** @return when this account was created */
+ /**
+ * @return when this account was created
+ */
public Date getCreated() {
- return created;
+ return this.created;
}
- /** @return when this account was last modified */
+ /**
+ * @return when this account was last modified
+ */
+ @Nullable
public Date getModified() {
- return modified;
- }
-
- @Override
- public int compareTo(EmailAccount other) {
- return account.compareTo(other.getAccount());
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof EmailAccount) {
- EmailAccount other = (EmailAccount) object;
- return Objects.equal(account, other.account);
- } else {
- return false;
- }
+ return this.modified;
}
@Override
public int hashCode() {
return Objects.hashCode(account);
}
-
+
@Override
- public String toString() {
- return String.format("account=%s, quota=%s, usedquota=%s, antispamLevel=%d, " +
- "antiVirus=%b, autoRespond=%b, autoRespondMessage=%s, autoRespondSaveEmail=%b, " +
- "created=%s, modified=%s", account, quota, usedQuota, antispamLevel, antiVirus, autoRespond, autoRespondMessage,
- autoRespondSaveEmail, created.toString(), modified.toString());
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailAccount that = EmailAccount.class.cast(obj);
+ return Objects.equal(this.account, that.account);
}
-}
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("account", account).add("quota", quota).add("antispamLevel", antispamLevel).add("antiVirus", antiVirus).add("autoRespond", autoRespond).add("autoRespondMessage", autoRespondMessage).add("autoRespondSaveEmail", autoRespondSaveEmail).add("created", created).add("modified", modified);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAlias.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAlias.java
new file mode 100644
index 0000000000..21ec5d59cd
--- /dev/null
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailAlias.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to jclouds, Inc. (jclouds) under one or more
+ * contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. jclouds licenses this file
+ * to you 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 org.jclouds.glesys.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;
+
+/**
+ * Detailed information on an Email Account
+ *
+ * @author Adam Lowe
+ * @see
+ */
+public class EmailAlias {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
+ }
+
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailAccount(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String account;
+ protected String forwardTo;
+
+ /**
+ * @see org.jclouds.glesys.domain.EmailAlias#getAccount()
+ */
+ public T account(String account) {
+ this.account = checkNotNull(account, "account");
+ return self();
+ }
+
+ /**
+ * @see EmailAlias#getForwardTo()
+ */
+ public T forwardTo(String forwardTo) {
+ this.forwardTo = checkNotNull(forwardTo, "forwardTo");
+ return self();
+ }
+
+ public EmailAlias build() {
+ return new EmailAlias(account, forwardTo);
+ }
+
+ public T fromEmailAccount(EmailAlias in) {
+ return this.account(in.getAccount()).forwardTo(in.getForwardTo());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
+
+ private final String account;
+ private final String forwardTo;
+
+ @ConstructorProperties({
+ "emailalias", "goto"
+ })
+ protected EmailAlias(String account, String forwardTo) {
+ this.account = checkNotNull(account, "account");
+ this.forwardTo = checkNotNull(forwardTo, "forwardTo");
+ }
+
+ /**
+ * @return the e-mail address being forwarded
+ */
+ public String getAccount() {
+ return this.account;
+ }
+
+ /**
+ * @return the e-mail address this address forwards to
+ */
+ public String getForwardTo() {
+ return this.forwardTo;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(account);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailAlias that = EmailAlias.class.cast(obj);
+ return Objects.equal(this.account, that.account);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("account", account).add("forwardTo", forwardTo);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverview.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverview.java
index 785f386330..d5419770ce 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverview.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverview.java
@@ -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,69 +18,99 @@
*/
package org.jclouds.glesys.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
import java.util.Set;
import com.google.common.annotations.Beta;
-import com.google.common.base.Joiner;
import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
/**
* Structure containing all information about e-mail addresses for a GleSYS account
- *
+ *
* @author Adam Lowe
* @see
*/
//TODO: find a better name for this class
@Beta
public class EmailOverview {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private EmailOverviewSummary summary;
- private Set domains;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailOverview(this);
+ }
- public Builder summary(EmailOverviewSummary summary) {
- this.summary = summary;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected EmailOverviewSummary summary;
+ protected Set domains = ImmutableSet.of();
+
+ /**
+ * @see EmailOverview#getSummary()
+ */
+ public T summary(EmailOverviewSummary summary) {
+ this.summary = checkNotNull(summary, "summary");
+ return self();
}
- public Builder domains(Set domains) {
- this.domains = domains;
- return this;
+ /**
+ * @see EmailOverview#getDomains()
+ */
+ public T domains(Set domains) {
+ this.domains = ImmutableSet.copyOf(checkNotNull(domains, "domains"));
+ return self();
}
- public Builder domains(EmailOverviewDomain... domains) {
- return domains(ImmutableSet.copyOf(domains));
+ public T domains(EmailOverviewDomain... in) {
+ return domains(ImmutableSet.copyOf(in));
}
public EmailOverview build() {
return new EmailOverview(summary, domains);
}
-
- public Builder fromEmailOverview(EmailOverview in) {
- return summary(in.getSummary()).domains(in.getDomains());
+
+ public T fromEmailOverview(EmailOverview in) {
+ return this.summary(in.getSummary()).domains(in.getDomains());
}
}
- private EmailOverviewSummary summary;
- private Set domains;
-
- public EmailOverview(EmailOverviewSummary summary, Set domains) {
- this.summary = summary;
- this.domains = domains;
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
}
- /** @return summary information about the account */
+ private final EmailOverviewSummary summary;
+ private final Set domains;
+
+ @ConstructorProperties({
+ "summary", "domains"
+ })
+ protected EmailOverview(EmailOverviewSummary summary, Set domains) {
+ this.summary = checkNotNull(summary, "summary");
+ this.domains = ImmutableSet.copyOf(checkNotNull(domains, "domains"));
+ }
+
+ /**
+ * @return summary information about the account
+ */
public EmailOverviewSummary getSummary() {
- return summary;
+ return this.summary;
}
- /** @return the set of detailed information about the e-mail addresses and aliases for each domain */
+ /**
+ * @return the set of detailed information about the e-mail addresses and aliases for each domain
+ */
public Set getDomains() {
- return domains == null ? ImmutableSet.of() : domains;
+ return this.domains;
}
@Override
@@ -89,23 +119,22 @@ public class EmailOverview {
}
@Override
- public boolean equals(Object object) {
- if (object == this) {
- return true;
- }
- if (object instanceof EmailOverview) {
- EmailOverview other = (EmailOverview) object;
- return Objects.equal(summary, other.summary)
- && Objects.equal(domains, other.domains);
- } else {
- return false;
- }
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailOverview that = EmailOverview.class.cast(obj);
+ return Objects.equal(this.summary, that.summary)
+ && Objects.equal(this.domains, that.domains);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("summary", summary).add("domains", domains);
}
@Override
public String toString() {
- Joiner commaJoiner = Joiner.on(", ");
- return String.format("summary=%s, domains=[%s]", summary, commaJoiner.join(getDomains()));
+ return string().toString();
}
-}
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewDomain.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewDomain.java
index 3ae18e0e90..62dcfca8e9 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewDomain.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewDomain.java
@@ -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,48 +18,75 @@
*/
package org.jclouds.glesys.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
import com.google.common.annotations.Beta;
import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Detailed information about e-mail settings for a single domain
- *
+ *
* @author Adam Lowe
* @see
*/
-//TODO: find a better name for this class
@Beta
public class EmailOverviewDomain {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String domain;
- private int accounts;
- private int aliases;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailOverviewDomain(this);
+ }
- public Builder domain(String domain) {
- this.domain = domain;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String domain;
+ protected int accounts;
+ protected int aliases;
+
+ /**
+ * @see EmailOverviewDomain#getDomain()
+ */
+ public T domain(String domain) {
+ this.domain = checkNotNull(domain, "domain");
+ return self();
}
- public Builder accounts(int accounts) {
+ /**
+ * @see EmailOverviewDomain#getAccounts()
+ */
+ public T accounts(int accounts) {
this.accounts = accounts;
- return this;
+ return self();
}
-
- public Builder aliases(int aliases) {
+
+ /**
+ * @see EmailOverviewDomain#getAliases()
+ */
+ public T aliases(int aliases) {
this.aliases = aliases;
- return this;
+ return self();
}
-
+
public EmailOverviewDomain build() {
return new EmailOverviewDomain(domain, accounts, aliases);
}
-
- public Builder fromEmailOverview(EmailOverviewDomain in) {
- return domain(domain).accounts(in.getAccounts()).aliases(in.getAliases());
+
+ public T fromEmailOverviewDomain(EmailOverviewDomain in) {
+ return this.domain(in.getDomain()).accounts(in.getAccounts()).aliases(in.getAliases());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
@@ -67,25 +94,28 @@ public class EmailOverviewDomain {
private final int accounts;
private final int aliases;
- public EmailOverviewDomain(String domain, int accounts, int aliases) {
- this.domain = domain;
+ @ConstructorProperties({
+ "domainname", "accounts", "aliases"
+ })
+ protected EmailOverviewDomain(String domain, int accounts, int aliases) {
+ this.domain = checkNotNull(domain, "domain");
this.accounts = accounts;
this.aliases = aliases;
}
/** @return the domain name */
public String getDomain() {
- return domain;
+ return this.domain;
}
/** @return the number of e-mail accounts in the domain */
public int getAccounts() {
- return accounts;
+ return this.accounts;
}
/** @return the number of e-mail aliases in the domain */
public int getAliases() {
- return aliases;
+ return this.aliases;
}
@Override
@@ -94,21 +124,20 @@ public class EmailOverviewDomain {
}
@Override
- public boolean equals(Object object) {
- if (object == this) {
- return true;
- }
- if (object instanceof EmailOverviewDomain) {
- EmailOverviewDomain other = (EmailOverviewDomain) object;
- return Objects.equal(domain, other.domain);
- } else {
- return false;
- }
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailOverviewDomain that = EmailOverviewDomain.class.cast(obj);
+ return Objects.equal(this.domain, that.domain);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("domain", domain).add("accounts", accounts).add("aliases", aliases);
}
@Override
public String toString() {
- return String.format("domain=%s, accounts=%d, aliases=%d", domain, accounts, aliases);
+ return string().toString();
}
-}
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewSummary.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewSummary.java
index abc674db41..0799722504 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewSummary.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailOverviewSummary.java
@@ -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,90 +18,130 @@
*/
package org.jclouds.glesys.domain;
+import java.beans.ConstructorProperties;
+
import com.google.common.annotations.Beta;
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Summary information of e-mail settings and limits for a GleSYS account
- *
+ *
* @author Adam Lowe
* @see
*/
//TODO: find a better name for this class
@Beta
public class EmailOverviewSummary {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private int accounts;
- private int maxAccounts;
- private int aliases;
- private int maxAliases;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailOverviewSummary(this);
+ }
- public Builder accounts(int accounts) {
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected int accounts;
+ protected int maxAccounts;
+ protected int aliases;
+ protected int maxAliases;
+
+ /**
+ * @see EmailOverviewSummary#getAccounts()
+ */
+ public T accounts(int accounts) {
this.accounts = accounts;
- return this;
+ return self();
}
-
- public Builder maxAccounts(int maxAccounts) {
+
+ /**
+ * @see EmailOverviewSummary#getMaxAccounts()
+ */
+ public T maxAccounts(int maxAccounts) {
this.maxAccounts = maxAccounts;
- return this;
+ return self();
}
-
- public Builder aliases(int aliases) {
+
+ /**
+ * @see EmailOverviewSummary#getAliases()
+ */
+ public T aliases(int aliases) {
this.aliases = aliases;
- return this;
+ return self();
}
-
- public Builder maxAliases(int maxAliases) {
+
+ /**
+ * @see EmailOverviewSummary#getMaxAliases()
+ */
+ public T maxAliases(int maxAliases) {
this.maxAliases = maxAliases;
- return this;
+ return self();
}
-
+
public EmailOverviewSummary build() {
return new EmailOverviewSummary(accounts, maxAccounts, aliases, maxAliases);
}
-
- public Builder fromEmailOverview(EmailOverviewSummary in) {
- return accounts(in.getAccounts()).maxAccounts(in.getMaxAccounts()).aliases(in.getAliases()).maxAliases(in.getMaxAliases());
+
+ public T fromEmailOverviewSummary(EmailOverviewSummary in) {
+ return this.accounts(in.getAccounts())
+ .maxAccounts(in.getMaxAccounts())
+ .aliases(in.getAliases())
+ .maxAliases(in.getMaxAliases());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
private final int accounts;
- @SerializedName("maxaccounts")
private final int maxAccounts;
private final int aliases;
- @SerializedName("maxaliases")
private final int maxAliases;
- public EmailOverviewSummary(int accounts, int maxAccounts, int aliases, int maxAliases) {
+ @ConstructorProperties({
+ "accounts", "maxaccounts", "aliases", "maxaliases"
+ })
+ protected EmailOverviewSummary(int accounts, int maxAccounts, int aliases, int maxAliases) {
this.accounts = accounts;
this.maxAccounts = maxAccounts;
this.aliases = aliases;
this.maxAliases = maxAliases;
}
- /** @return the number of e-mail accounts */
+ /**
+ * @return the number of e-mail accounts
+ */
public int getAccounts() {
- return accounts;
+ return this.accounts;
}
- /** @return the maximum number of e-mail accounts */
+ /**
+ * @return the maximum number of e-mail accounts
+ */
public int getMaxAccounts() {
- return maxAccounts;
+ return this.maxAccounts;
}
- /** @return the number of e-mail aliases */
+ /**
+ * @return the number of e-mail aliases
+ */
public int getAliases() {
- return aliases;
+ return this.aliases;
}
- /** @return the maximum number of e-mail aliases */
+ /**
+ * @return the maximum number of e-mail aliases
+ */
public int getMaxAliases() {
- return maxAliases;
+ return this.maxAliases;
}
@Override
@@ -110,24 +150,24 @@ public class EmailOverviewSummary {
}
@Override
- public boolean equals(Object object) {
- if (object == this) {
- return true;
- }
- if (object instanceof EmailOverviewSummary) {
- EmailOverviewSummary other = (EmailOverviewSummary) object;
- return Objects.equal(accounts, other.accounts)
- && Objects.equal(maxAccounts, other.maxAccounts)
- && Objects.equal(aliases, other.aliases)
- && Objects.equal(maxAliases, other.maxAliases);
- } else {
- return false;
- }
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailOverviewSummary that = EmailOverviewSummary.class.cast(obj);
+ return Objects.equal(this.accounts, that.accounts)
+ && Objects.equal(this.maxAccounts, that.maxAccounts)
+ && Objects.equal(this.aliases, that.aliases)
+ && Objects.equal(this.maxAliases, that.maxAliases);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("accounts", accounts).add("maxAccounts", maxAccounts).add("aliases", aliases).add("maxAliases", maxAliases);
}
@Override
public String toString() {
- return String.format("accounts=%d, maxAccounts=%d, aliases=%d, maxAliases=%d", accounts, maxAccounts, aliases, maxAliases);
+ return string().toString();
}
-}
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailQuota.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailQuota.java
new file mode 100644
index 0000000000..e587ff023b
--- /dev/null
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/EmailQuota.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to jclouds, Inc. (jclouds) under one or more
+ * contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. jclouds licenses this file
+ * to you 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 org.jclouds.glesys.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;
+
+/**
+ * Information on an Email Account Quota size
+ *
+ * @author Adam Lowe
+ * @see
+ */
+public class EmailQuota {
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
+ }
+
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromEmailAccount(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected int max;
+ protected String unit;
+
+ /**
+ * @see EmailQuota#getMax()
+ */
+ public T max(int max) {
+ this.max = max;
+ return self();
+ }
+
+ /**
+ * @see EmailQuota#getUnit()
+ */
+ public T unit(String unit) {
+ this.unit = checkNotNull(unit, "unit");
+ return self();
+ }
+
+ public EmailQuota build() {
+ return new EmailQuota(max, unit);
+ }
+
+ public T fromEmailAccount(EmailQuota in) {
+ return this.max(in.getMax()).unit(in.getUnit());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
+
+ private final int max;
+ private final String unit;
+
+ @ConstructorProperties({
+ "max", "unit"
+ })
+ protected EmailQuota(int max, String unit) {
+ this.max = max;
+ this.unit = unit;
+ }
+
+ /**
+ * @return the maximum size of the mailbox (in units)
+ * @see #getUnit
+ */
+ public int getMax() {
+ return this.max;
+ }
+
+ /**
+ * @return the quota for this e-mail account
+ */
+ public String getUnit() {
+ return this.unit;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(max, unit);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ EmailQuota that = EmailQuota.class.cast(obj);
+ return Objects.equal(this.max, that.max) && Objects.equal(this.unit, that.unit);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("max", max).add("unit", unit);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Ip.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Ip.java
index 2222ae8ed0..0f53453194 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Ip.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Ip.java
@@ -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
@@ -16,107 +16,145 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.jclouds.glesys.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Represents an ip address used by a server.
*
* @author Adam Lowe
- * @see ServerCreated
+ * @see Server
* @see ServerDetails
*/
public class Ip {
- public static Builder builder() {
- return new Builder();
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromIp(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
protected String ip;
protected int version;
protected double cost;
+ protected String currency;
- protected Builder version(int version) {
- this.version = version;
- return this;
+ /**
+ * @see Ip#getIp()
+ */
+ public T ip(String ip) {
+ this.ip = checkNotNull(ip, "ip");
+ return self();
}
- public Builder version4() {
+ /**
+ * @see Ip#getVersion()
+ */
+ protected T version(int version) {
+ this.version = version;
+ return self();
+ }
+
+ /**
+ * @see Ip#getVersion()
+ */
+ public T version4() {
return version(4);
}
- public Builder version6() {
+ /**
+ * @see Ip#getVersion()
+ */
+ public T version6() {
return version(6);
}
-
- public Builder ip(String ip) {
- this.ip = ip;
- return this;
+
+ /**
+ * @see Ip#getCost()
+ */
+ public T cost(double cost) {
+ this.cost = cost;
+ return self();
}
- public Builder cost(double cost) {
- this.cost = cost;
- return this;
+ /**
+ * @see Ip#getCurrency()
+ */
+ public T currency(String currency) {
+ this.currency = currency;
+ return self();
}
public Ip build() {
- return new Ip(ip, version, cost);
+ return new Ip(ip, version, cost, currency);
}
- public Builder fromIpCreated(Ip from) {
- return ip(from.getIp()).version(from.getVersion()).cost(from.getCost());
+ public T fromIp(Ip in) {
+ return this.ip(in.getIp()).version(in.getVersion()).cost(in.getCost());
}
}
-
- @SerializedName("ipaddress")
- protected final String ip;
- protected final int version;
- protected final double cost;
- public Ip(String ip, int version, double cost) {
- this.ip = ip;
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
+
+ private final String ip;
+ private final int version;
+ private final double cost;
+ private final String currency;
+
+ @ConstructorProperties({
+ "ipaddress", "version", "cost", "currency"
+ })
+ protected Ip(String ip, int version, double cost, String currency) {
+ this.ip = checkNotNull(ip, "ip");
this.version = version;
this.cost = cost;
+ this.currency = checkNotNull(currency, "currency");
}
/**
* @return the IP version, ex. 4
*/
- public int getVersion() {
- return version;
+ public String getIp() {
+ return this.ip;
}
/**
* @return the ip address of the new server
*/
- public String getIp() {
- return ip;
+ public int getVersion() {
+ return this.version;
}
/**
* @return the cost of the ip address allocated to the new server
+ * @see #getCurrency()
*/
public double getCost() {
- return cost;
+ return this.cost;
}
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof Ip) {
- final Ip other = (Ip) object;
- return Objects.equal(ip, other.ip)
- && Objects.equal(version, other.version)
- && Objects.equal(cost, other.cost);
- } else {
- return false;
- }
+ /**
+ * @return the currency of the cost
+ * @see #getCost()
+ */
+ public String getCurrency() {
+ return currency;
}
@Override
@@ -125,8 +163,24 @@ public class Ip {
}
@Override
- public String toString() {
- return String.format("[ip=%s, version=%d, cost=%f]",
- ip, version, cost);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Ip that = Ip.class.cast(obj);
+ return Objects.equal(this.ip, that.ip)
+ && Objects.equal(this.version, that.version)
+ && Objects.equal(this.cost, that.cost)
+ && Objects.equal(this.currency, that.currency);
}
-}
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("ip", ip).add("version", version).add("cost", cost).add("currency", currency);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/IpDetails.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/IpDetails.java
index c16d18d5f1..466c951221 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/IpDetails.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/IpDetails.java
@@ -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
@@ -16,187 +16,311 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.jclouds.glesys.domain;
-import java.util.Arrays;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
import java.util.List;
import org.jclouds.javax.annotation.Nullable;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
+import com.google.common.collect.ImmutableList;
/**
* Represents detailed information about an IP address.
*/
public class IpDetails {
- public static Builder builder() {
- return new Builder();
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromIpDetails(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
protected String datacenter;
- protected String ipversion;
+ protected int ipversion;
protected String ptr;
protected String platform;
protected String address;
protected String netmask;
protected String broadcast;
protected String gateway;
- protected List nameservers;
+ protected List nameServers = ImmutableList.of();
+ protected String serverId;
+ protected Cost cost;
+ protected boolean reserved;
- public Builder datacenter(String datacenter) {
- this.datacenter = datacenter;
- return this;
+ /**
+ * @see IpDetails#getDatacenter()
+ */
+ public T datacenter(String datacenter) {
+ this.datacenter = checkNotNull(datacenter, "datacenter");
+ return self();
}
- public Builder ipversion(String ipversion) {
+ protected T version(int ipversion) {
this.ipversion = ipversion;
- return this;
+ return self();
}
- public Builder ptr(String ptr) {
- this.ptr = ptr;
- return this;
+ /*
+ * @see IpDetails#getVersion()
+ */
+ public T version4() {
+ return version(4);
}
- public Builder platform(String platform) {
- this.platform = platform;
- return this;
+ /*
+ * @see IpDetails#getVersion()
+ */
+ public T version6() {
+ return version(6);
+ }
+
+ /**
+ * @see IpDetails#getPtr()
+ */
+ public T ptr(String ptr) {
+ this.ptr = checkNotNull(ptr, "ptr");
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getPlatform()
+ */
+ public T platform(String platform) {
+ this.platform = checkNotNull(platform, "platform");
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getAddress()
+ */
+ public T address(String address) {
+ this.address = address;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getNetmask()
+ */
+ public T netmask(String netmask) {
+ this.netmask = netmask;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getBroadcast()
+ */
+ public T broadcast(String broadcast) {
+ this.broadcast = broadcast;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getGateway()
+ */
+ public T gateway(String gateway) {
+ this.gateway = gateway;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getNameServers()
+ */
+ public T nameServers(List nameservers) {
+ this.nameServers = ImmutableList.copyOf(checkNotNull(nameservers, "nameServers"));
+ return self();
+ }
+
+ public T nameServers(String... in) {
+ return nameServers(ImmutableList.copyOf(in));
+ }
+
+ /**
+ * @see IpDetails#getServerId()
+ */
+ public T serverId(String serverId) {
+ this.serverId = serverId;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#getCost()
+ */
+ public T cost(Cost cost) {
+ this.cost = cost;
+ return self();
+ }
+
+ /**
+ * @see IpDetails#isReserved()
+ */
+ public T reserved(boolean reserved) {
+ this.reserved = reserved;
+ return self();
}
public IpDetails build() {
- return new IpDetails(datacenter, ipversion, ptr, platform,
- address, netmask, broadcast, gateway, nameservers);
+ return new IpDetails(datacenter, ipversion, ptr, platform, address, netmask, broadcast, gateway, nameServers,
+ serverId, cost, new GleSYSBoolean(reserved));
}
- public Builder address(String address) {
- this.address = address;
- return this;
+ public T fromIpDetails(IpDetails in) {
+ return this.datacenter(in.getDatacenter())
+ .version(in.getVersion())
+ .ptr(in.getPtr())
+ .platform(in.getPlatform())
+ .address(in.getAddress())
+ .netmask(in.getNetmask())
+ .broadcast(in.getBroadcast())
+ .gateway(in.getGateway())
+ .nameServers(in.getNameServers())
+ .serverId(in.getServerId())
+ .cost(in.getCost())
+ .reserved(in.isReserved());
}
+ }
- public Builder netmask(String netmask) {
- this.netmask = netmask;
- return this;
- }
-
- public Builder broadcast(String broadcast) {
- this.broadcast = broadcast;
- return this;
- }
-
- public Builder gateway(String gateway) {
- this.gateway = gateway;
- return this;
- }
-
- public Builder nameServers(String... nameServers) {
- this.nameservers = Arrays.asList(nameServers);
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
return this;
}
}
- protected String datacenter;
- protected String ipversion;
- @SerializedName("PTR")
- protected String ptr;
- protected String platform;
- protected String address;
- protected String netmask;
- protected String broadcast;
- protected String gateway;
- protected List nameservers;
+ private final String datacenter;
+ private final int version;
+ private final String ptr;
+ private final String platform;
+ private final String address;
+ private final String netmask;
+ private final String broadcast;
+ private final String gateway;
+ private final List nameServers;
+ private final String serverId;
+ private final Cost cost;
+ private final boolean reserved;
- public IpDetails(String datacenter, String ipversion, String ptr, String platform,
- @Nullable String address, @Nullable String netmask,
- @Nullable String broadcast, @Nullable String gateway,
- @Nullable List nameservers) {
- this.datacenter = datacenter;
- this.ipversion = ipversion;
- this.ptr = ptr;
- this.platform = platform;
+ @ConstructorProperties({
+ "datacenter", "ipversion", "ptr", "platform", "ipaddress", "netmask", "broadcast", "gateway", "nameservers",
+ "serverid", "cost", "reserved"
+ })
+ protected IpDetails(String datacenter, int version, String ptr, String platform, String address,
+ @Nullable String netmask, @Nullable String broadcast, @Nullable String gateway,
+ List nameServers, @Nullable String serverId, Cost cost, GleSYSBoolean reserved) {
+ this.datacenter = checkNotNull(datacenter, "datacenter");
+ this.version = checkNotNull(version, "version");
+ this.ptr = checkNotNull(ptr, "ptr");
+ this.platform = checkNotNull(platform, "platform");
this.address = address;
this.netmask = netmask;
this.broadcast = broadcast;
this.gateway = gateway;
- this.nameservers = nameservers;
+ this.nameServers = ImmutableList.copyOf(nameServers);
+ this.serverId = serverId;
+ this.cost = checkNotNull(cost, "cost");
+ this.reserved = checkNotNull(reserved, "reserved").getValue();
}
public String getDatacenter() {
- return datacenter;
+ return this.datacenter;
}
- public String getIpversion() {
- return ipversion;
+ /**
+ * @return the IP version, ex. 4
+ */
+ public int getVersion() {
+ return this.version;
}
public String getPtr() {
- return ptr;
+ return this.ptr;
}
public String getPlatform() {
- return platform;
+ return this.platform;
}
public String getAddress() {
- return address;
+ return this.address;
}
+ @Nullable
public String getNetmask() {
- return netmask;
+ return this.netmask;
}
+ @Nullable
public String getBroadcast() {
- return broadcast;
+ return this.broadcast;
}
+ @Nullable
public String getGateway() {
- return gateway;
+ return this.gateway;
}
public List getNameServers() {
- return nameservers;
+ return this.nameServers;
}
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ @Nullable
+ public String getServerId() {
+ return serverId;
+ }
- IpDetails ipDetails = (IpDetails) o;
+ public Cost getCost() {
+ return cost;
+ }
- if (address != null ? !address.equals(ipDetails.address) : ipDetails.address != null) return false;
- if (broadcast != null ? !broadcast.equals(ipDetails.broadcast) : ipDetails.broadcast != null) return false;
- if (datacenter != null ? !datacenter.equals(ipDetails.datacenter) : ipDetails.datacenter != null) return false;
- if (gateway != null ? !gateway.equals(ipDetails.gateway) : ipDetails.gateway != null) return false;
- if (ipversion != null ? !ipversion.equals(ipDetails.ipversion) : ipDetails.ipversion != null) return false;
- if (netmask != null ? !netmask.equals(ipDetails.netmask) : ipDetails.netmask != null) return false;
- if (platform != null ? !platform.equals(ipDetails.platform) : ipDetails.platform != null) return false;
- if (ptr != null ? !ptr.equals(ipDetails.ptr) : ipDetails.ptr != null) return false;
- if (nameservers != null ? !nameservers.equals(ipDetails.nameservers) : ipDetails.nameservers != null)
- return false;
-
- return true;
+ public boolean isReserved() {
+ return reserved;
}
@Override
public int hashCode() {
- int result = datacenter != null ? datacenter.hashCode() : 0;
- result = 31 * result + (ipversion != null ? ipversion.hashCode() : 0);
- result = 31 * result + (ptr != null ? ptr.hashCode() : 0);
- result = 31 * result + (platform != null ? platform.hashCode() : 0);
- result = 31 * result + (address != null ? address.hashCode() : 0);
- result = 31 * result + (netmask != null ? netmask.hashCode() : 0);
- result = 31 * result + (broadcast != null ? broadcast.hashCode() : 0);
- result = 31 * result + (gateway != null ? gateway.hashCode() : 0);
- return result;
+ return Objects.hashCode(datacenter, version, ptr, platform, address, netmask, broadcast, gateway, nameServers,
+ serverId, cost, reserved);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ IpDetails that = IpDetails.class.cast(obj);
+ return Objects.equal(this.datacenter, that.datacenter)
+ && Objects.equal(this.version, that.version)
+ && Objects.equal(this.ptr, that.ptr)
+ && Objects.equal(this.platform, that.platform)
+ && Objects.equal(this.address, that.address)
+ && Objects.equal(this.netmask, that.netmask)
+ && Objects.equal(this.broadcast, that.broadcast)
+ && Objects.equal(this.gateway, that.gateway)
+ && Objects.equal(this.nameServers, that.nameServers)
+ && Objects.equal(this.serverId, that.serverId)
+ && Objects.equal(this.cost, that.cost)
+ && Objects.equal(this.reserved, that.reserved);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("datacenter", datacenter).add("ipversion", version).add("ptr", ptr).add("platform", platform)
+ .add("address", address).add("netmask", netmask).add("broadcast", broadcast).add("gateway", gateway)
+ .add("nameServers", nameServers).add("serverId", serverId).add("cost", cost).add("reserved", reserved);
}
@Override
public String toString() {
- return String.format("IpDetails[datacenter=%s, ipversion=%s, platform=%s, PTR=%s, " +
- "address=%s, netmask=%s, broadcast=%s, gateway=%s",
- datacenter, ipversion, platform, ptr, address, netmask, broadcast, gateway);
+ return string().toString();
}
-}
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/OSTemplate.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/OSTemplate.java
index e516280554..b96b1c35e0 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/OSTemplate.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/OSTemplate.java
@@ -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,12 @@
*/
package org.jclouds.glesys.domain;
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.beans.ConstructorProperties;
+
import com.google.common.base.Objects;
-import com.google.common.collect.Ordering;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Operating system template
@@ -28,73 +31,106 @@ import com.google.gson.annotations.SerializedName;
* @author Adam Lowe
* @see
*/
-public class OSTemplate implements Comparable{
+public class OSTemplate {
- public static Builder builder() {
- return new Builder();
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private String name;
- private int minDiskSize;
- private int minMemSize;
- private String os;
- private String platform;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromOSTemplate(this);
+ }
- public Builder name(String name) {
- this.name = name;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected String name;
+ protected int minDiskSize;
+ protected int minMemSize;
+ protected String os;
+ protected String platform;
+
+ /**
+ * @see OSTemplate#getName()
+ */
+ public T name(String name) {
+ this.name = checkNotNull(name, "name");
+ return self();
}
- public Builder minDiskSize(int minDiskSize) {
+ /**
+ * @see OSTemplate#getMinDiskSize()
+ */
+ public T minDiskSize(int minDiskSize) {
this.minDiskSize = minDiskSize;
- return this;
+ return self();
}
- public Builder minMemSize(int minMemSize) {
+ /**
+ * @see OSTemplate#getMinMemSize()
+ */
+ public T minMemSize(int minMemSize) {
this.minMemSize = minMemSize;
- return this;
+ return self();
}
- public Builder os(String os) {
- this.os = os;
- return this;
+ /**
+ * @see OSTemplate#getOs()
+ */
+ public T os(String os) {
+ this.os = checkNotNull(os, "os");
+ return self();
}
- public Builder platform(String platform) {
- this.platform = platform;
- return this;
+ /**
+ * @see OSTemplate#getPlatform()
+ */
+ public T platform(String platform) {
+ this.platform = checkNotNull(platform, "platform");
+ return self();
}
public OSTemplate build() {
return new OSTemplate(name, minDiskSize, minMemSize, os, platform);
}
- public Builder fromTemplate(OSTemplate in) {
- return name(in.getName()).minDiskSize(in.getMinDiskSize()).minMemSize(in.getMinMemSize()).os(in.getOs()).platform(in.getPlatform());
+ public T fromOSTemplate(OSTemplate in) {
+ return this.name(in.getName())
+ .minDiskSize(in.getMinDiskSize())
+ .minMemSize(in.getMinMemSize())
+ .os(in.getOs())
+ .platform(in.getPlatform());
}
+ }
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
}
private final String name;
- @SerializedName("minimumdisksize")
private final int minDiskSize;
- @SerializedName("minimummemorysize")
private final int minMemSize;
- @SerializedName("operatingsystem")
private final String os;
private final String platform;
- public OSTemplate(String name, int minDiskSize, int minMemSize, String os, String platform) {
- this.name = name;
+ @ConstructorProperties({
+ "name", "minimumdisksize", "minimummemorysize", "operatingsystem", "platform"
+ })
+ protected OSTemplate(String name, int minDiskSize, int minMemSize, String os, String platform) {
+ this.name = checkNotNull(name, "name");
this.minDiskSize = minDiskSize;
this.minMemSize = minMemSize;
- this.os = os;
- this.platform = platform;
+ this.os = checkNotNull(os, "os");
+ this.platform = checkNotNull(platform, "platform");
}
+ /**
+ */
public String getName() {
- return name;
+ return this.name;
}
/**
@@ -102,7 +138,7 @@ public class OSTemplate implements Comparable{
* @see org.jclouds.glesys.domain.AllowedArgumentsForCreateServer#getDiskSizesInGB()
*/
public int getMinDiskSize() {
- return minDiskSize;
+ return this.minDiskSize;
}
/**
@@ -110,35 +146,21 @@ public class OSTemplate implements Comparable{
* @see org.jclouds.glesys.domain.AllowedArgumentsForCreateServer#getMemorySizesInMB()
*/
public int getMinMemSize() {
- return minMemSize;
+ return this.minMemSize;
}
/**
* @return the name of the operating system type ex. "linux"
*/
public String getOs() {
- return os;
+ return this.os;
}
/**
* @return the name of the platform this template is available in, ex. "Xen"
*/
public String getPlatform() {
- return platform;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof OSTemplate) {
- final OSTemplate other = (OSTemplate) object;
- return Objects.equal(name, other.name)
- && Objects.equal(platform, other.platform);
- } else {
- return false;
- }
+ return this.platform;
}
@Override
@@ -147,13 +169,22 @@ public class OSTemplate implements Comparable{
}
@Override
- public String toString() {
- return String.format("[name=%s, min_disk_size=%d, min_mem_size=%d, os=%s, platform=%s]",
- name, minDiskSize, minMemSize, os, platform);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ OSTemplate that = OSTemplate.class.cast(obj);
+ return Objects.equal(this.name, that.name)
+ && Objects.equal(this.platform, that.platform);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("name", name).add("minDiskSize", minDiskSize).add("minMemSize", minMemSize).add("os", os).add("platform", platform);
}
@Override
- public int compareTo(OSTemplate arg0) {
- return Ordering.usingToString().compare(this, arg0);
+ public String toString() {
+ return string().toString();
}
-}
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ResourceUsage.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ResourceUsage.java
index 6bc3ade688..bc5483f1ef 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ResourceUsage.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ResourceUsage.java
@@ -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,7 +18,12 @@
*/
package org.jclouds.glesys.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;
/**
* Detailed information on usage
@@ -26,38 +31,60 @@ import com.google.common.base.Objects;
* @author Adam Lowe
* @see ServerStatus
*/
-
public class ResourceUsage {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private double usage;
- private double max;
- private String unit;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromResourceUsage(this);
+ }
- public Builder usage(double usage) {
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected double usage;
+ protected double max;
+ protected String unit;
+
+ /**
+ * @see ResourceUsage#getUsage()
+ */
+ public T usage(double usage) {
this.usage = usage;
- return this;
+ return self();
}
- public Builder max(double max) {
+ /**
+ * @see ResourceUsage#getMax()
+ */
+ public T max(double max) {
this.max = max;
- return this;
+ return self();
}
- public Builder unit(String unit) {
- this.unit = unit;
- return this;
+ /**
+ * @see ResourceUsage#getUnit()
+ */
+ public T unit(String unit) {
+ this.unit = checkNotNull(unit, "unit");
+ return self();
}
public ResourceUsage build() {
return new ResourceUsage(usage, max, unit);
}
- public Builder fromCpu(ResourceUsage in) {
- return usage(in.getUsage()).max(in.getMax()).unit(in.getUnit());
+ public T fromResourceUsage(ResourceUsage in) {
+ return this.usage(in.getUsage()).max(in.getMax()).unit(in.getUnit());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
@@ -65,56 +92,58 @@ public class ResourceUsage {
private final double max;
private final String unit;
- public ResourceUsage(double usage, double max, String unit) {
+ @ConstructorProperties({
+ "usage", "max", "unit"
+ })
+ protected ResourceUsage(double usage, double max, String unit) {
this.usage = usage;
this.max = max;
- this.unit = unit;
+ this.unit = checkNotNull(unit, "unit");
}
/**
* @return the usage in #unit
*/
public double getUsage() {
- return usage;
+ return this.usage;
}
/**
* @return the max usage in #unit
*/
public double getMax() {
- return max;
+ return this.max;
}
/**
* @return the unit used
*/
public String getUnit() {
- return unit;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof ResourceUsage) {
- ResourceUsage other = (ResourceUsage) object;
- return Objects.equal(usage, other.usage)
- && Objects.equal(max, other.max)
- && Objects.equal(unit, other.unit);
- } else {
- return false;
- }
+ return this.unit;
}
@Override
public int hashCode() {
return Objects.hashCode(usage, max, unit);
}
-
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ResourceUsage that = ResourceUsage.class.cast(obj);
+ return Objects.equal(this.usage, that.usage)
+ && Objects.equal(this.max, that.max)
+ && Objects.equal(this.unit, that.unit);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("usage", usage).add("max", max).add("unit", unit);
+ }
+
@Override
public String toString() {
- return String.format("[usage=%f, max=%f, unit=%s]",
- usage, max, unit);
+ return string().toString();
}
-}
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Server.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Server.java
index c4cfe3ca7b..535275f354 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/Server.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/Server.java
@@ -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
@@ -20,9 +20,11 @@ package org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
+import java.beans.ConstructorProperties;
+
import com.google.common.base.CaseFormat;
import com.google.common.base.Objects;
-import com.google.gson.annotations.SerializedName;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Listing of a server.
@@ -30,8 +32,10 @@ import com.google.gson.annotations.SerializedName;
* @author Adrian Cole
* @see
*/
-public class Server implements Comparable {
-
+public class Server {
+
+ /**
+ */
public static enum State {
RUNNING, LOCKED, STOPPED, UNRECOGNIZED;
@@ -53,53 +57,80 @@ public class Server implements Comparable {
}
}
}
-
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServer(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
protected String id;
protected String hostname;
protected String datacenter;
protected String platform;
- public Builder id(String id) {
- this.id = id;
- return this;
+ /**
+ * @see Server#getId()
+ */
+ public T id(String id) {
+ this.id = checkNotNull(id, "id");
+ return self();
}
- public Builder hostname(String hostname) {
- this.hostname = hostname;
- return this;
+ /**
+ * @see Server#getHostname()
+ */
+ public T hostname(String hostname) {
+ this.hostname = checkNotNull(hostname, "hostname");
+ return self();
}
- public Builder datacenter(String datacenter) {
- this.datacenter = datacenter;
- return this;
+ /**
+ * @see Server#getDatacenter()
+ */
+ public T datacenter(String datacenter) {
+ this.datacenter = checkNotNull(datacenter, "datacenter");
+ return self();
}
- public Builder platform(String platform) {
- this.platform = platform;
- return this;
+ /**
+ * @see Server#getPlatform()
+ */
+ public T platform(String platform) {
+ this.platform = checkNotNull(platform, "platform");
+ return self();
}
public Server build() {
return new Server(id, hostname, datacenter, platform);
}
- public Builder fromServer(Server in) {
- return datacenter(in.getDatacenter()).platform(in.getPlatform()).hostname(in.getHostname()).id(in.getId());
+ public T fromServer(Server in) {
+ return this.id(in.getId()).hostname(in.getHostname()).datacenter(in.getDatacenter()).platform(in.getPlatform());
}
}
- @SerializedName("serverid")
- protected final String id;
- protected final String hostname;
- protected final String datacenter;
- protected final String platform;
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
- public Server(String id, String hostname, String datacenter, String platform) {
+ private final String id;
+ private final String hostname;
+ private final String datacenter;
+ private final String platform;
+
+ @ConstructorProperties({
+ "serverid", "hostname", "datacenter", "platform"
+ })
+ protected Server(String id, String hostname, String datacenter, String platform) {
this.id = checkNotNull(id, "id");
this.hostname = checkNotNull(hostname, "hostname");
this.datacenter = checkNotNull(datacenter, "datacenter");
@@ -110,45 +141,28 @@ public class Server implements Comparable {
* @return the generated id of the server
*/
public String getId() {
- return id;
+ return this.id;
}
/**
* @return the hostname of the server
*/
public String getHostname() {
- return hostname;
+ return this.hostname;
}
/**
* @return platform running the server (ex. {@code OpenVZ})
*/
- public String getPlatform() {
- return platform;
+ public String getDatacenter() {
+ return this.datacenter;
}
/**
* @return the datacenter the server exists in (ex. {@code Falkenberg})
*/
- public String getDatacenter() {
- return datacenter;
- }
-
- @Override
- public int compareTo(Server other) {
- return id.compareTo(other.getId());
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof Server) {
- return Objects.equal(id, ((Server) object).id);
- } else {
- return false;
- }
+ public String getPlatform() {
+ return this.platform;
}
@Override
@@ -157,8 +171,21 @@ public class Server implements Comparable {
}
@Override
- public String toString() {
- return String.format("[id=%s, hostname=%s, datacenter=%s, platform=%s]", id, hostname, datacenter, platform);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ Server that = Server.class.cast(obj);
+ return Objects.equal(this.id, that.id);
}
-}
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("id", id).add("hostname", hostname).add("datacenter", datacenter)
+ .add("platform", platform);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerDetails.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerDetails.java
index c18ce42ce6..2af987350e 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerDetails.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerDetails.java
@@ -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
@@ -20,221 +20,236 @@ package org.jclouds.glesys.domain;
import static com.google.common.base.Preconditions.checkNotNull;
+import java.beans.ConstructorProperties;
import java.util.Set;
+import org.jclouds.javax.annotation.Nullable;
+
+import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
-import com.google.gson.annotations.SerializedName;
/**
* Detailed information about a server such as cpuCores, hardware configuration
* (cpu, memory and disk), ip adresses, cost, transfer, os and more.
- *
+ *
* @author Adrian Cole
* @see
*/
public class ServerDetails extends Server {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder extends Server.Builder {
- private Server.State state;
- private String description;
- private String templateName;
- private int cpuCores;
- private int memorySizeMB;
- private int diskSizeGB;
- private int transferGB;
- private Cost cost;
- private Set ips = ImmutableSet.of();
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServerDetails(this);
+ }
- public Builder state(Server.State state) {
- this.state = state;
- return this;
+ public static abstract class Builder> extends Server.Builder {
+ protected Server.State state;
+ protected String description;
+ protected String templateName;
+ protected int cpuCores;
+ protected int memorySizeMB;
+ protected int diskSizeGB;
+ protected int transferGB;
+ protected Cost cost;
+ protected Set ips = ImmutableSet.of();
+
+ /**
+ * @see ServerDetails#getState()
+ */
+ public T state(Server.State state) {
+ this.state = checkNotNull(state, "state");
+ return self();
}
- public Builder description(String description) {
- this.description = description;
- return this;
+ /**
+ * @see ServerDetails#getDescription()
+ */
+ public T description(String description) {
+ this.description = checkNotNull(description, "description");
+ return self();
}
- public Builder templateName(String templateName) {
- this.templateName = templateName;
- return this;
+ /**
+ * @see ServerDetails#getTemplateName()
+ */
+ public T templateName(String templateName) {
+ this.templateName = checkNotNull(templateName, "templateName");
+ return self();
}
- public Builder cpuCores(int cpuCores) {
+ /**
+ * @see ServerDetails#getCpuCores()
+ */
+ public T cpuCores(int cpuCores) {
this.cpuCores = cpuCores;
- return this;
+ return self();
}
- public Builder memorySizeMB(int memorySizeMB) {
+ /**
+ * @see ServerDetails#getMemorySizeMB()
+ */
+ public T memorySizeMB(int memorySizeMB) {
this.memorySizeMB = memorySizeMB;
- return this;
+ return self();
}
- public Builder diskSizeGB(int diskSizeGB) {
+ /**
+ * @see ServerDetails#getDiskSizeGB()
+ */
+ public T diskSizeGB(int diskSizeGB) {
this.diskSizeGB = diskSizeGB;
- return this;
+ return self();
}
- public Builder transferGB(int transferGB) {
+ /**
+ * @see ServerDetails#getTransferGB()
+ */
+ public T transferGB(int transferGB) {
this.transferGB = transferGB;
- return this;
+ return self();
}
- public Builder cost(Cost cost) {
- this.cost = cost;
- return this;
+ /**
+ * @see ServerDetails#getCost()
+ */
+ public T cost(Cost cost) {
+ this.cost = checkNotNull(cost, "cost");
+ return self();
}
- public Builder ips(Ip... ips) {
- return ips(ImmutableSet.copyOf(ips));
+ /**
+ * @see ServerDetails#getIps()
+ */
+ public T ips(Set ips) {
+ this.ips = ImmutableSet.copyOf(checkNotNull(ips, "ips"));
+ return self();
}
- public Builder ips(Iterable ips) {
- this.ips = ImmutableSet.copyOf(ips);
- return this;
+ public T ips(Ip... in) {
+ return ips(ImmutableSet.copyOf(in));
}
public ServerDetails build() {
- return new ServerDetails(id, hostname, datacenter, platform, state, templateName, description, cpuCores,
- memorySizeMB, diskSizeGB, transferGB, cost, ips);
+ return new ServerDetails(id, hostname, datacenter, platform, state, description, templateName, cpuCores, memorySizeMB, diskSizeGB, transferGB, cost, ips);
}
- public Builder fromServerDetails(ServerDetails in) {
- return fromServer(in).templateName(in.getTemplateName()).state(in.getState()).memorySizeMB(in.getMemorySizeMB())
- .diskSizeGB(in.getDiskSizeGB()).cpuCores(in.getCpuCores()).cost(in.getCost())
- .transferGB(in.getTransferGB()).description(in.getDescription()).ips(in.getIps());
+ public T fromServerDetails(ServerDetails in) {
+ return super.fromServer(in)
+ .state(in.getState())
+ .description(in.getDescription())
+ .templateName(in.getTemplateName())
+ .cpuCores(in.getCpuCores())
+ .memorySizeMB(in.getMemorySizeMB())
+ .diskSizeGB(in.getDiskSizeGB())
+ .transferGB(in.getTransferGB())
+ .cost(in.getCost())
+ .ips(in.getIps());
}
+ }
+ private static class ConcreteBuilder extends Builder {
@Override
- public Builder id(String id) {
- return Builder.class.cast(super.id(id));
- }
-
- @Override
- public Builder hostname(String hostname) {
- return Builder.class.cast(super.hostname(hostname));
- }
-
- @Override
- public Builder datacenter(String datacenter) {
- return Builder.class.cast(super.datacenter(datacenter));
- }
-
- @Override
- public Builder platform(String platform) {
- return Builder.class.cast(super.platform(platform));
- }
-
- @Override
- public Builder fromServer(Server in) {
- return Builder.class.cast(super.fromServer(in));
+ protected ConcreteBuilder self() {
+ return this;
}
}
private final Server.State state;
private final String description;
- @SerializedName("templatename")
private final String templateName;
- @SerializedName("cpucores")
private final int cpuCores;
- @SerializedName("memorysize")
private final int memorySizeMB;
- @SerializedName("disksize")
private final int diskSizeGB;
- @SerializedName("transfer")
private final int transferGB;
private final Cost cost;
- @SerializedName("iplist")
private final Set ips;
- public ServerDetails(String id, String hostname, String datacenter, String platform, Server.State state,
- String templateName, String description, int cpuCores, int memorySizeMB, int diskSizeGB, int transferGB,
- Cost cost, Set ips) {
+ @ConstructorProperties({
+ "serverid", "hostname", "datacenter", "platform", "state", "description", "templatename", "cpucores", "memorysize", "disksize", "transfer", "cost", "iplist"
+ })
+ protected ServerDetails(String id, String hostname, String datacenter, String platform, @Nullable Server.State state, @Nullable String description, String templateName, int cpuCores, int memorySizeMB, int diskSizeGB, int transferGB, Cost cost, @Nullable Set ips) {
super(id, hostname, datacenter, platform);
this.state = state;
- this.templateName = checkNotNull(templateName, "template");
this.description = description;
+ this.templateName = checkNotNull(templateName, "templateName");
this.cpuCores = cpuCores;
this.memorySizeMB = memorySizeMB;
this.diskSizeGB = diskSizeGB;
this.transferGB = transferGB;
this.cost = checkNotNull(cost, "cost");
- this.ips = ImmutableSet. copyOf(ips);
+ this.ips = ips == null ? ImmutableSet.of() : ImmutableSet.copyOf(checkNotNull(ips, "ips"));
}
/**
* @return the state of the server (e.g. "running")
*/
public Server.State getState() {
- return state;
+ return this.state;
}
/**
* @return the user-specified description of the server
*/
public String getDescription() {
- return description;
- }
-
- /**
- * @return number of cores on the server
- */
- public int getCpuCores() {
- return cpuCores;
- }
-
- /**
- * @return the disk of the server in GB
- */
- public int getDiskSizeGB() {
- return diskSizeGB;
- }
-
- /**
- * @return the memory of the server in MB
- */
- public int getMemorySizeMB() {
- return memorySizeMB;
- }
-
- /**
- * @return the transfer of the server
- */
- public int getTransferGB() {
- return transferGB;
- }
-
- /**
- * @return details of the cost of the server
- */
- public Cost getCost() {
- return cost;
- }
-
- /**
- * @return the ip addresses assigned to the server
- */
- public Set getIps() {
- return ips;
+ return this.description;
}
/**
* @return the name of the template used to create the server
*/
public String getTemplateName() {
- return templateName;
+ return this.templateName;
}
- @Override
- public String toString() {
- return String
- .format(
- "[id=%s, hostname=%s, datacenter=%s, platform=%s, templateName=%s, state=%s, description=%s, cpuCores=%d, memorySizeMB=%d, diskSizeGB=%d, transferGB=%d, cost=%s, ips=%s]",
- id, hostname, datacenter, platform, templateName, state, description, cpuCores, memorySizeMB,
- diskSizeGB, transferGB, cost, ips);
+ /**
+ * @return number of cores on the server
+ */
+ public int getCpuCores() {
+ return this.cpuCores;
}
-}
+ /**
+ * @return the memory of the server in MB
+ */
+ public int getMemorySizeMB() {
+ return this.memorySizeMB;
+ }
+
+ /**
+ * @return the disk of the server in GB
+ */
+ public int getDiskSizeGB() {
+ return this.diskSizeGB;
+ }
+
+ /**
+ * @return the transfer of the server
+ */
+ public int getTransferGB() {
+ return this.transferGB;
+ }
+
+ /**
+ * @return details of the cost of the server
+ */
+ public Cost getCost() {
+ return this.cost;
+ }
+
+ /**
+ * @return the ip addresses assigned to the server
+ */
+ public Set getIps() {
+ return this.ips;
+ }
+
+ protected ToStringHelper string() {
+ return super.string().add("state", state).add("description", description).add("templateName", templateName)
+ .add("cpuCores", cpuCores).add("memorySizeMB", memorySizeMB).add("diskSizeGB", diskSizeGB)
+ .add("transferGB", transferGB).add("cost", cost).add("ips", ips);
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerLimit.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerLimit.java
index 3a3a60b627..3f13bd0ae0 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerLimit.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerLimit.java
@@ -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,54 +18,94 @@
*/
package org.jclouds.glesys.domain;
+import java.beans.ConstructorProperties;
+
import com.google.common.base.Objects;
+import com.google.common.base.Objects.ToStringHelper;
/**
* Detailed information about an OpenVZ server's limits
- *
+ *
* @author Adam Lowe
* @see
*/
public class ServerLimit {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private int held;
- private int maxHeld;
- private int barrier;
- private int limit;
- private int failCount;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServerLimit(this);
+ }
- public Builder held(int held) {
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected long held;
+ protected long maxHeld;
+ protected long barrier;
+ protected long limit;
+ protected long failCount;
+
+ /**
+ * @see ServerLimit#getHeld()
+ */
+ public T held(long held) {
this.held = held;
- return this;
+ return self();
}
- public Builder maxHeld(int maxHeld) {
+ /**
+ * @see ServerLimit#getMaxHeld()
+ */
+ public T maxHeld(long maxHeld) {
this.maxHeld = maxHeld;
- return this;
+ return self();
}
- public Builder barrier(int barrier) {
+ /**
+ * @see ServerLimit#getBarrier()
+ */
+ public T barrier(long barrier) {
this.barrier = barrier;
- return this;
+ return self();
}
- public Builder limit(int limit) {
+ /**
+ * @see ServerLimit#getLimit()
+ */
+ public T limit(long limit) {
this.limit = limit;
- return this;
+ return self();
}
- public Builder failCount(int failCount) {
+ /**
+ * @see ServerLimit#getFailCount()
+ */
+ public T failCount(long failCount) {
this.failCount = failCount;
- return this;
+ return self();
}
public ServerLimit build() {
return new ServerLimit(held, maxHeld, barrier, limit, failCount);
}
+
+ public T fromServerLimit(ServerLimit in) {
+ return this.held(in.getHeld())
+ .maxHeld(in.getMaxHeld())
+ .barrier(in.getBarrier())
+ .limit(in.getLimit())
+ .failCount(in.getFailCount());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
}
private final long held;
@@ -74,7 +114,10 @@ public class ServerLimit {
private final long limit;
private final long failCount;
- public ServerLimit(long held, long maxHeld, long barrier, long limit, long failCount) {
+ @ConstructorProperties({
+ "held", "maxHeld", "barrier", "limit", "failCount"
+ })
+ protected ServerLimit(long held, long maxHeld, long barrier, long limit, long failCount) {
this.held = held;
this.maxHeld = maxHeld;
this.barrier = barrier;
@@ -83,40 +126,23 @@ public class ServerLimit {
}
public long getHeld() {
- return held;
+ return this.held;
}
public long getMaxHeld() {
- return maxHeld;
+ return this.maxHeld;
}
public long getBarrier() {
- return barrier;
+ return this.barrier;
}
public long getLimit() {
- return limit;
+ return this.limit;
}
public long getFailCount() {
- return failCount;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof ServerLimit) {
- final ServerLimit other = (ServerLimit) object;
- return Objects.equal(held, other.held)
- && Objects.equal(maxHeld, other.maxHeld)
- && Objects.equal(barrier, other.barrier)
- && Objects.equal(limit, other.limit)
- && Objects.equal(failCount, other.failCount);
- } else {
- return false;
- }
+ return this.failCount;
}
@Override
@@ -125,7 +151,25 @@ public class ServerLimit {
}
@Override
- public String toString() {
- return String.format("[held=%d, maxHeld=%d, barrier=%d, limit=%d, failCount=%d]", held, maxHeld, barrier, limit, failCount);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ServerLimit that = ServerLimit.class.cast(obj);
+ return Objects.equal(this.held, that.held)
+ && Objects.equal(this.maxHeld, that.maxHeld)
+ && Objects.equal(this.barrier, that.barrier)
+ && Objects.equal(this.limit, that.limit)
+ && Objects.equal(this.failCount, that.failCount);
}
-}
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("held", held).add("maxHeld", maxHeld).add("barrier", barrier)
+ .add("limit", limit).add("failCount", failCount);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerSpec.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerSpec.java
index 3ddb6031a1..513b121a9b 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerSpec.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerSpec.java
@@ -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,92 +18,129 @@
*/
package org.jclouds.glesys.domain;
-import static com.google.common.base.Objects.equal;
-import static com.google.common.base.Objects.toStringHelper;
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 ServerSpec
+ *
* @author Adrian Cole
*/
public class ServerSpec {
- public static Builder builder() {
- return new Builder();
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public Builder toBuilder() {
- return Builder.fromServerSpecification(this);
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServerSpec(this);
}
- public static class Builder {
- protected String datacenter;
+ public static abstract class Builder> {
+ protected abstract T self();
+
protected String platform;
- protected String templateName;
- protected int diskSizeGB;
+ protected String datacenter;
protected int memorySizeMB;
+ protected int diskSizeGB;
+ protected String templateName;
protected int cpuCores;
protected int transferGB;
- public Builder datacenter(String datacenter) {
- this.datacenter = datacenter;
- return this;
+ /**
+ * @see ServerSpec#getPlatform()
+ */
+ public T platform(String platform) {
+ this.platform = checkNotNull(platform, "platform");
+ return self();
}
- public Builder platform(String platform) {
- this.platform = platform;
- return this;
+ /**
+ * @see ServerSpec#getDatacenter()
+ */
+ public T datacenter(String datacenter) {
+ this.datacenter = checkNotNull(datacenter, "datacenter");
+ return self();
}
- public Builder templateName(String templateName) {
- this.templateName = templateName;
- return this;
- }
-
- public Builder diskSizeGB(int diskSizeGB) {
- this.diskSizeGB = diskSizeGB;
- return this;
- }
-
- public Builder memorySizeMB(int memorySizeMB) {
+ /**
+ * @see ServerSpec#getMemorySizeMB()
+ */
+ public T memorySizeMB(int memorySizeMB) {
this.memorySizeMB = memorySizeMB;
- return this;
+ return self();
}
- public Builder cpuCores(int cpuCores) {
+ /**
+ * @see ServerSpec#getDiskSizeGB()
+ */
+ public T diskSizeGB(int diskSizeGB) {
+ this.diskSizeGB = diskSizeGB;
+ return self();
+ }
+
+ /**
+ * @see ServerSpec#getTemplateName()
+ */
+ public T templateName(String templateName) {
+ this.templateName = checkNotNull(templateName, "templateName");
+ return self();
+ }
+
+ /**
+ * @see ServerSpec#getCpuCores()
+ */
+ public T cpuCores(int cpuCores) {
this.cpuCores = cpuCores;
- return this;
+ return self();
}
- public Builder transferGB(int transferGB) {
+ /**
+ * @see ServerSpec#getTransferGB()
+ */
+ public T transferGB(int transferGB) {
this.transferGB = transferGB;
- return this;
+ return self();
}
public ServerSpec build() {
return new ServerSpec(platform, datacenter, memorySizeMB, diskSizeGB, templateName, cpuCores, transferGB);
}
- public static Builder fromServerSpecification(ServerSpec in) {
- return new Builder().platform(in.getPlatform()).datacenter(in.getDatacenter())
- .memorySizeMB(in.getMemorySizeMB()).diskSizeGB(in.getDiskSizeGB()).templateName(in.getTemplateName())
- .cpuCores(in.getCpuCores()).transferGB(in.getTransferGB());
+ public T fromServerSpec(ServerSpec in) {
+ return this.platform(in.getPlatform())
+ .datacenter(in.getDatacenter())
+ .memorySizeMB(in.getMemorySizeMB())
+ .diskSizeGB(in.getDiskSizeGB())
+ .templateName(in.getTemplateName())
+ .cpuCores(in.getCpuCores())
+ .transferGB(in.getTransferGB());
}
}
- protected final String platform;
- protected final String datacenter;
- protected final int memorySizeMB;
- protected final int diskSizeGB;
- protected final String templateName;
- protected final int cpuCores;
- protected final int transferGB;
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
- protected ServerSpec(String platform, String datacenter, int memorySizeMB, int diskSizeGB, String templateName,
- int cpuCores, int transferGB) {
+ private final String platform;
+ private final String datacenter;
+ private final int memorySizeMB;
+ private final int diskSizeGB;
+ private final String templateName;
+ private final int cpuCores;
+ private final int transferGB;
+
+ @ConstructorProperties({
+ "platform", "datacenter", "memorySizeMB", "diskSizeGB", "templateName", "cpuCores", "transferGB"
+ })
+ protected ServerSpec(String platform, String datacenter, int memorySizeMB, int diskSizeGB, String templateName, int cpuCores, int transferGB) {
this.platform = checkNotNull(platform, "platform");
this.datacenter = checkNotNull(datacenter, "datacenter");
this.memorySizeMB = memorySizeMB;
@@ -116,66 +153,50 @@ public class ServerSpec {
/**
* @return the data center to create the new server in
*/
- public String getDatacenter() {
- return datacenter;
+ public String getPlatform() {
+ return this.platform;
}
/**
* @return the platform to use (i.e. "Xen" or "OpenVZ")
*/
- public String getPlatform() {
- return platform;
+ public String getDatacenter() {
+ return this.datacenter;
}
/**
* @return the os template to use to create the new server
*/
- public String getTemplateName() {
- return templateName;
+ public int getMemorySizeMB() {
+ return this.memorySizeMB;
}
/**
* @return the amount of disk space, in GB, to allocate
*/
public int getDiskSizeGB() {
- return diskSizeGB;
+ return this.diskSizeGB;
}
/**
* @return the memory, in MB, to allocate
*/
- public int getMemorySizeMB() {
- return memorySizeMB;
+ public String getTemplateName() {
+ return this.templateName;
}
/**
* @return the number of CPU cores to allocate
*/
public int getCpuCores() {
- return cpuCores;
+ return this.cpuCores;
}
/**
* @return bandwidth of in GB
*/
public int getTransferGB() {
- return transferGB;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof ServerSpec) {
- final ServerSpec that = ServerSpec.class.cast(object);
- return equal(platform, that.platform) && equal(datacenter, that.datacenter)
- && equal(memorySizeMB, that.memorySizeMB) && equal(diskSizeGB, that.diskSizeGB)
- && equal(templateName, that.templateName) && equal(cpuCores, that.cpuCores)
- && equal(transferGB, that.transferGB);
- } else {
- return false;
- }
+ return this.transferGB;
}
@Override
@@ -184,9 +205,27 @@ public class ServerSpec {
}
@Override
- public String toString() {
- return toStringHelper("").add("platform", platform).add("datacenter", datacenter)
- .add("templateName", templateName).add("cpuCores", cpuCores).add("memorySizeMB", memorySizeMB)
- .add("diskSizeGB", diskSizeGB).add("transferGB", transferGB).toString();
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ServerSpec that = ServerSpec.class.cast(obj);
+ return Objects.equal(this.platform, that.platform)
+ && Objects.equal(this.datacenter, that.datacenter)
+ && Objects.equal(this.memorySizeMB, that.memorySizeMB)
+ && Objects.equal(this.diskSizeGB, that.diskSizeGB)
+ && Objects.equal(this.templateName, that.templateName)
+ && Objects.equal(this.cpuCores, that.cpuCores)
+ && Objects.equal(this.transferGB, that.transferGB);
}
-}
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("platform", platform).add("datacenter", datacenter)
+ .add("memorySizeMB", memorySizeMB).add("diskSizeGB", diskSizeGB).add("templateName", templateName)
+ .add("cpuCores", cpuCores).add("transferGB", transferGB);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerStatus.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerStatus.java
index 4b3dfc797e..78ba1a791d 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerStatus.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerStatus.java
@@ -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,7 +18,14 @@
*/
package org.jclouds.glesys.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;
/**
* Detailed information server status including hardware usage (cpu, memory and disk), bandwidth and up-time.
@@ -26,51 +33,78 @@ import com.google.common.base.Objects;
* @author Adam Lowe
* @see
*/
-
public class ServerStatus {
- public static Builder builder() {
- return new Builder();
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private Server.State state;
- private ResourceUsage cpu;
- private ResourceUsage memory;
- private ResourceUsage disk;
- private ServerUptime uptime;
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServerStatus(this);
+ }
- public Builder state(Server.State state) {
- this.state = state;
- return this;
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected Server.State state;
+ protected ResourceUsage cpu;
+ protected ResourceUsage memory;
+ protected ResourceUsage disk;
+ protected ServerUptime uptime;
+
+ /**
+ * @see ServerStatus#getState()
+ */
+ public T state(Server.State state) {
+ this.state = checkNotNull(state, "state");
+ return self();
}
- public Builder cpu(ResourceUsage cpu) {
- this.cpu = cpu;
- return this;
+ /**
+ * @see ServerStatus#getCpu()
+ */
+ public T cpu(ResourceUsage cpu) {
+ this.cpu = checkNotNull(cpu, "cpu");
+ return self();
}
- public Builder memory(ResourceUsage memory) {
- this.memory = memory;
- return this;
+ /**
+ * @see ServerStatus#getMemory()
+ */
+ public T memory(ResourceUsage memory) {
+ this.memory = checkNotNull(memory, "memory");
+ return self();
}
- public Builder disk(ResourceUsage disk) {
- this.disk = disk;
- return this;
+ /**
+ * @see ServerStatus#getDisk()
+ */
+ public T disk(ResourceUsage disk) {
+ this.disk = checkNotNull(disk, "disk");
+ return self();
}
- public Builder uptime(ServerUptime uptime) {
- this.uptime = uptime;
- return this;
+ /**
+ * @see ServerStatus#getUptime()
+ */
+ public T uptime(ServerUptime uptime) {
+ this.uptime = checkNotNull(uptime, "uptime");
+ return self();
}
public ServerStatus build() {
return new ServerStatus(state, cpu, memory, disk, uptime);
}
- public Builder fromServerStatus(ServerStatus in) {
- return state(in.getState()).cpu(in.getCpu()).memory(in.getMemory()).disk(in.getDisk()).uptime(in.getUptime());
+ public T fromServerStatus(ServerStatus in) {
+ return this.state(in.getState()).cpu(in.getCpu()).memory(in.getMemory()).disk(in.getDisk()).uptime(in.getUptime());
+ }
+ }
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
}
}
@@ -80,8 +114,12 @@ public class ServerStatus {
private final ResourceUsage disk;
private final ServerUptime uptime;
- public ServerStatus(Server.State state, ResourceUsage cpu, ResourceUsage memory, ResourceUsage disk, ServerUptime uptime) {
- this.state = state;
+ @ConstructorProperties({
+ "state", "cpu", "memory", "disk", "uptime"
+ })
+ protected ServerStatus(Server.State state, @Nullable ResourceUsage cpu, @Nullable ResourceUsage memory,
+ @Nullable ResourceUsage disk, @Nullable ServerUptime uptime) {
+ this.state = checkNotNull(state, "state");
this.cpu = cpu;
this.memory = memory;
this.disk = disk;
@@ -91,64 +129,68 @@ public class ServerStatus {
/**
* @return the state of the server (e.g. "running")
*/
+ @Nullable
public Server.State getState() {
- return state;
+ return this.state;
}
/**
* @return CPU usage information
*/
+ @Nullable
public ResourceUsage getCpu() {
- return cpu;
+ return this.cpu;
}
/**
* @return details of memory usage and limits
*/
+ @Nullable
public ResourceUsage getMemory() {
- return memory;
+ return this.memory;
}
/**
* @return details of disk usage and limits
*/
+ @Nullable
public ResourceUsage getDisk() {
- return disk;
+ return this.disk;
}
/**
* @return the uptime of the server
*/
+ @Nullable
public ServerUptime getUptime() {
- return uptime;
- }
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- if (object instanceof ServerStatus) {
- final ServerStatus other = (ServerStatus) object;
- return Objects.equal(state, other.state)
- && Objects.equal(cpu, other.cpu)
- && Objects.equal(memory, other.memory)
- && Objects.equal(disk, other.disk)
- && Objects.equal(uptime, other.uptime);
- } else {
- return false;
- }
+ return this.uptime;
}
@Override
public int hashCode() {
return Objects.hashCode(state, cpu, memory, disk, uptime);
}
-
+
@Override
- public String toString() {
- return String.format("[state=%s, cpu=%s, memory=%s, disk=%s, uptime=%s]",
- state, cpu, memory, disk, uptime);
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ServerStatus that = ServerStatus.class.cast(obj);
+ return Objects.equal(this.state, that.state)
+ && Objects.equal(this.cpu, that.cpu)
+ && Objects.equal(this.memory, that.memory)
+ && Objects.equal(this.disk, that.disk)
+ && Objects.equal(this.uptime, that.uptime);
}
-}
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("")
+ .add("state", state).add("cpu", cpu).add("memory", memory).add("disk", disk).add("uptime", uptime);
+ }
+
+ @Override
+ public String toString() {
+ return string().toString();
+ }
+
+}
\ No newline at end of file
diff --git a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerUptime.java b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerUptime.java
index eb44a065ed..5b78d96203 100644
--- a/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerUptime.java
+++ b/labs/glesys/src/main/java/org/jclouds/glesys/domain/ServerUptime.java
@@ -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,7 +18,12 @@
*/
package org.jclouds.glesys.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;
/**
* Represents an 'uptime' duration of server in a Glesys cloud
@@ -27,64 +32,76 @@ import com.google.common.base.Objects;
* @see ServerStatus
*/
public class ServerUptime {
- public static Builder builder() {
- return new Builder();
+
+ public static Builder> builder() {
+ return new ConcreteBuilder();
}
- public static class Builder {
- private long current;
- private String unit;
-
- public Builder current(long current) {
+ public Builder> toBuilder() {
+ return new ConcreteBuilder().fromServerUptime(this);
+ }
+
+ public static abstract class Builder> {
+ protected abstract T self();
+
+ protected long current;
+ protected String unit;
+
+ /**
+ * @see ServerUptime#getCurrent()
+ */
+ public T current(long current) {
this.current = current;
- return this;
+ return self();
}
- public Builder unit(String unit) {
- this.unit = unit;
- return this;
+ /**
+ * @see ServerUptime#getUnit()
+ */
+ public T unit(String unit) {
+ this.unit = checkNotNull(unit, "unit");
+ return self();
}
-
+
public ServerUptime build() {
return new ServerUptime(current, unit);
}
-
- public Builder fromServerUptime(ServerUptime from) {
- return current(from.getCurrent()).unit(from.getUnit());
+
+ public T fromServerUptime(ServerUptime in) {
+ return this.current(in.getCurrent()).unit(in.getUnit());
}
}
-
+
+ private static class ConcreteBuilder extends Builder {
+ @Override
+ protected ConcreteBuilder self() {
+ return this;
+ }
+ }
+
private final long current;
private final String unit;
- public ServerUptime(long current, String unit) {
+ @ConstructorProperties({
+ "current", "unit"
+ })
+ protected ServerUptime(long current, String unit) {
this.current = current;
- this.unit = unit;
+ this.unit = checkNotNull(unit, "unit");
}
-
+
/**
- * @return the time the server has been up in #unit
+ * @return the time the server has been up in #getUnit()
*/
public long getCurrent() {
- return current;
+ return this.current;
}
/**
- * @return the unit used for #time
+ * @return the unit used for #getCurrent()
*/
public String getUnit() {
- return unit;
- }
-
-
- @Override
- public boolean equals(Object object) {
- if (this == object) {
- return true;
- }
- return object instanceof ServerUptime
- && Objects.equal(current, ((ServerUptime) object).getCurrent())
- && Objects.equal(unit, ((ServerUptime) object).getUnit());
+ return this.unit;
}
@Override
@@ -92,9 +109,21 @@ public class ServerUptime {
return Objects.hashCode(current, unit);
}
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
+ ServerUptime that = ServerUptime.class.cast(obj);
+ return Objects.equal(this.current, that.current) && Objects.equal(this.unit, that.unit);
+ }
+
+ protected ToStringHelper string() {
+ return Objects.toStringHelper("").add("current", current).add("unit", unit);
+ }
+
@Override
public String toString() {
- return String.format("[current=%d unit=%s]", current, unit);
+ return string().toString();
}
}
\ No newline at end of file