From 3e2e24493e92512b68904cea79a36058dc3b00b9 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Thu, 26 Jul 2012 10:58:01 -0700 Subject: [PATCH] Issue 981: better toString on template --- .../cloudstack/domain/ServiceOffering.java | 8 +- .../compute/domain/OperatingSystem.java | 88 ++++++--------- .../org/jclouds/compute/domain/Processor.java | 41 ++++--- .../domain/internal/ComputeMetadataImpl.java | 17 ++- .../compute/domain/internal/HardwareImpl.java | 16 +-- .../compute/domain/internal/ImageImpl.java | 11 +- .../domain/internal/NodeMetadataImpl.java | 17 +-- .../compute/domain/internal/TemplateImpl.java | 76 ++++++------- .../compute/domain/internal/VolumeImpl.java | 96 ++++++----------- .../jclouds/domain/internal/LocationImpl.java | 100 +++++++----------- .../domain/internal/ResourceMetadataImpl.java | 4 +- 11 files changed, 197 insertions(+), 277 deletions(-) diff --git a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/ServiceOffering.java b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/ServiceOffering.java index 7011e64a7f..b5bd47f365 100644 --- a/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/ServiceOffering.java +++ b/apis/cloudstack/src/main/java/org/jclouds/cloudstack/domain/ServiceOffering.java @@ -30,6 +30,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.base.Splitter; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; /** @@ -259,7 +260,7 @@ public class ServiceOffering implements Comparable { private final int memory; private final boolean haSupport; private final StorageType storageType; - private final String tags; + private final Set tags; private final boolean defaultUse; private final String hostTags; private final boolean systemOffering; @@ -285,7 +286,8 @@ public class ServiceOffering implements Comparable { this.memory = memory; this.haSupport = haSupport; this.storageType = storageType; - this.tags = tags; + this.tags = !(Strings.emptyToNull(tags) == null) ? ImmutableSet.copyOf(Splitter.on(',').split(tags)) + : ImmutableSet. of(); this.defaultUse = defaultUse; this.hostTags = hostTags; this.systemOffering = systemOffering; @@ -377,7 +379,7 @@ public class ServiceOffering implements Comparable { * @return the tags for the service offering */ public Set getTags() { - return tags == null ? ImmutableSet.of() : ImmutableSet.copyOf(Splitter.on(',').split(tags)); + return tags; } /** diff --git a/compute/src/main/java/org/jclouds/compute/domain/OperatingSystem.java b/compute/src/main/java/org/jclouds/compute/domain/OperatingSystem.java index 8135675c13..9851cca9ad 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/OperatingSystem.java +++ b/compute/src/main/java/org/jclouds/compute/domain/OperatingSystem.java @@ -18,11 +18,14 @@ */ package org.jclouds.compute.domain; +import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import org.jclouds.javax.annotation.Nullable; import com.google.common.annotations.Beta; +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; /** * Running Operating system @@ -95,6 +98,33 @@ public class OperatingSystem { protected String description; protected boolean is64Bit; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + OperatingSystem that = OperatingSystem.class.cast(o); + return equal(this.family, that.family) && equal(this.name, that.name) && equal(this.arch, that.arch) + && equal(this.version, that.version) && equal(this.description, that.description) + && equal(this.is64Bit, that.is64Bit); + } + + @Override + public int hashCode() { + return Objects.hashCode(family, name, arch, version, description, is64Bit); + } + + @Override + public String toString() { + return string().toString(); + } + + protected ToStringHelper string() { + return Objects.toStringHelper("").omitNullValues().add("family", family).add("name", name).add("arch", arch) + .add("version", version).add("description", description).add("is64Bit", is64Bit); + } + // for serialization/deserialization protected OperatingSystem() { @@ -192,66 +222,8 @@ public class OperatingSystem { return is64Bit; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((arch == null) ? 0 : arch.hashCode()); - result = prime * result + ((description == null) ? 0 : description.hashCode()); - result = prime * result + ((family == null) ? 0 : family.hashCode()); - result = prime * result + (is64Bit ? 1231 : 1237); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - result = prime * result + ((version == null) ? 0 : version.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof OperatingSystem)) - return false; - OperatingSystem other = (OperatingSystem) obj; - if (arch == null) { - if (other.arch != null) - return false; - } else if (!arch.equals(other.arch)) - return false; - if (description == null) { - if (other.description != null) - return false; - } else if (!description.equals(other.description)) - return false; - if (family == null) { - if (other.family != null) - return false; - } else if (!family.equals(other.family)) - return false; - if (is64Bit != other.is64Bit) - return false; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - if (version == null) { - if (other.version != null) - return false; - } else if (!version.equals(other.version)) - return false; - return true; - } - public Builder toBuilder() { return builder().fromOperatingSystem(this); } - @Override - public String toString() { - return "[name=" + name + ", family=" + family + ", version=" + version + ", arch=" + arch + ", is64Bit=" - + is64Bit + ", description=" + description + "]"; - } - } \ No newline at end of file diff --git a/compute/src/main/java/org/jclouds/compute/domain/Processor.java b/compute/src/main/java/org/jclouds/compute/domain/Processor.java index 9eb404f901..4f8b9e017c 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/Processor.java +++ b/compute/src/main/java/org/jclouds/compute/domain/Processor.java @@ -18,6 +18,10 @@ */ package org.jclouds.compute.domain; +import static com.google.common.base.Objects.equal; + +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ComparisonChain; /** @@ -64,36 +68,27 @@ public class Processor implements Comparable { } @Override - public String toString() { - return "[cores=" + cores + ", speed=" + speed + "]"; + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Processor that = Processor.class.cast(o); + return equal(this.cores, that.cores) && equal(this.speed, that.speed); } @Override public int hashCode() { - final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(cores); - result = prime * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(speed); - result = prime * result + (int) (temp ^ (temp >>> 32)); - return result; + return Objects.hashCode(cores, speed); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Processor other = (Processor) obj; - if (Double.doubleToLongBits(cores) != Double.doubleToLongBits(other.cores)) - return false; - if (Double.doubleToLongBits(speed) != Double.doubleToLongBits(other.speed)) - return false; - return true; + public String toString() { + return string().toString(); + } + + protected ToStringHelper string() { + return Objects.toStringHelper("").omitNullValues().add("cores", cores).add("speed", speed); } } \ No newline at end of file diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/ComputeMetadataImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/ComputeMetadataImpl.java index d768e82a03..287adbf480 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/ComputeMetadataImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/ComputeMetadataImpl.java @@ -91,11 +91,22 @@ public class ComputeMetadataImpl extends ResourceMetadataImpl imple public int hashCode() { return Objects.hashCode(super.hashCode(), id); } + + protected ToStringHelper computeToStringPrefix() { + return Objects.toStringHelper("").omitNullValues().add("id", getId()).add("providerId", getProviderId()) + .add("uri", getUri()).add("name", getName()).add("uri", getUri()).add("location", getLocation()); + } + protected ToStringHelper addComputeToStringSuffix(ToStringHelper helper) { + if (getTags().size() > 0) + helper.add("tags", getTags()); + if (getUserMetadata().size() > 0) + helper.add("userMetadata", getUserMetadata()); + return helper; + } + protected ToStringHelper string() { - return Objects.toStringHelper("").add("type", getType()).add("id", id).add("providerId", getProviderId()).add( - "name", getName()).add("location", getLocation()).add("uri", getUri()).add("tags", getTags()).add( - "userMetadata", getUserMetadata()); + return addComputeToStringSuffix(computeToStringPrefix()); } } diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/HardwareImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/HardwareImpl.java index 52e1bd92a1..f775f13198 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/HardwareImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/HardwareImpl.java @@ -36,6 +36,7 @@ import org.jclouds.domain.Location; import org.jclouds.domain.ResourceMetadata; import org.jclouds.javax.annotation.Nullable; +import com.google.common.base.Objects.ToStringHelper; import com.google.common.base.Predicate; import com.google.common.collect.ComparisonChain; import com.google.common.collect.ImmutableList; @@ -111,14 +112,15 @@ public class HardwareImpl extends ComputeMetadataImpl implements Hardware { } } - /** - * {@inheritDoc} - */ @Override - public String toString() { - return "[id=" + getId() + ", providerId=" + getProviderId() + ", name=" + getName() + ", processors=" - + processors + ", ram=" + ram + ", volumes=" + volumes + ", hypervisor=" + hypervisor - + ", supportsImage=" + supportsImage + ", tags=" + tags + "]"; + protected ToStringHelper string() { + ToStringHelper helper = computeToStringPrefix(); + helper.add("processors", processors).add("ram", ram); + if (volumes.size() > 0) + helper.add("volumes", volumes); + helper.add("hypervisor", hypervisor); + helper.add("supportsImage", supportsImage); + return addComputeToStringSuffix(helper); } /** diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/ImageImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/ImageImpl.java index ec9a821517..8be8473c0e 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/ImageImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/ImageImpl.java @@ -32,7 +32,6 @@ import org.jclouds.domain.Location; import org.jclouds.domain.LoginCredentials; import org.jclouds.javax.annotation.Nullable; -import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; /** @@ -124,11 +123,11 @@ public class ImageImpl extends ComputeMetadataImpl implements Image { // equals and toString from super are sufficient to establish identity equivalence protected ToStringHelper string() { - return Objects.toStringHelper("").add("id", getId()).add("providerId", getProviderId()).add("name", getName()) - .add("os", getOperatingSystem()).add("description", getDescription()).add("version", getVersion()).add( - "location", getLocation()).add("status", formatStatus(this)).add("loginUser", - ((defaultCredentials != null) ? defaultCredentials.identity : null)).add("tags", getTags()) - .add("userMetadata", getUserMetadata()); + ToStringHelper helper = computeToStringPrefix(); + helper.add("os", getOperatingSystem()).add("description", getDescription()).add("version", getVersion()) + .add("status", formatStatus(this)) + .add("loginUser", ((defaultCredentials != null) ? defaultCredentials.identity : null)); + return addComputeToStringSuffix(helper); } } diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/NodeMetadataImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/NodeMetadataImpl.java index c3bb5ea833..c3e5c1a83c 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/NodeMetadataImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/NodeMetadataImpl.java @@ -33,7 +33,6 @@ import org.jclouds.domain.Location; import org.jclouds.domain.LoginCredentials; import org.jclouds.javax.annotation.Nullable; -import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableSet; @@ -193,12 +192,14 @@ public class NodeMetadataImpl extends ComputeMetadataImpl implements NodeMetadat // equals and toString from super are sufficient to establish identity equivalence protected ToStringHelper string() { - return Objects.toStringHelper("").add("id", getId()).add("providerId", getProviderId()).add("group", getGroup()) - .add("name", getName()).add("location", getLocation()).add("uri", getUri()).add("imageId", getImageId()) - .add("os", getOperatingSystem()).add("status", formatStatus(this)).add("loginPort", getLoginPort()).add( - "hostname", getHostname()).add("privateAddresses", getPrivateAddresses()).add( - "publicAddresses", getPublicAddresses()).add("hardware", getHardware()).add("loginUser", - ((credentials != null) ? credentials.identity : null)).add("tags", getTags()).add( - "userMetadata", getUserMetadata()); + ToStringHelper helper = computeToStringPrefix(); + helper.add("group", getGroup()).add("imageId", getImageId()).add("os", getOperatingSystem()) + .add("status", formatStatus(this)).add("loginPort", getLoginPort()).add("hostname", getHostname()); + if (getPrivateAddresses().size() > 0) + helper.add("privateAddresses", getPrivateAddresses()); + if (getPublicAddresses().size() > 0) + helper.add("publicAddresses", getPublicAddresses()); + helper.add("hardware", getHardware()).add("loginUser", ((credentials != null) ? credentials.identity : null)); + return addComputeToStringSuffix(helper); } } diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateImpl.java index bc0eb8342d..5bcf6cf676 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/TemplateImpl.java @@ -18,6 +18,7 @@ */ package org.jclouds.compute.domain.internal; +import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import org.jclouds.compute.domain.Hardware; @@ -26,6 +27,9 @@ import org.jclouds.compute.domain.Template; import org.jclouds.compute.options.TemplateOptions; import org.jclouds.domain.Location; +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; + /** * * @author Adrian Cole @@ -33,13 +37,13 @@ import org.jclouds.domain.Location; public class TemplateImpl implements Template { private final Image image; - private final Hardware size; + private final Hardware hardware; private final Location location; private final TemplateOptions options; - public TemplateImpl(Image image, Hardware size, Location location, TemplateOptions options) { + public TemplateImpl(Image image, Hardware hardware, Location location, TemplateOptions options) { this.image = checkNotNull(image, "image"); - this.size = checkNotNull(size, "size"); + this.hardware = checkNotNull(hardware, "hardware"); this.location = checkNotNull(location, "location"); this.options = checkNotNull(options, "options"); } @@ -57,7 +61,7 @@ public class TemplateImpl implements Template { */ @Override public Hardware getHardware() { - return size; + return hardware; } /** @@ -77,52 +81,36 @@ public class TemplateImpl implements Template { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((image == null) ? 0 : image.hashCode()); - result = prime * result + ((location == null) ? 0 : location.hashCode()); - result = prime * result + ((options == null) ? 0 : options.hashCode()); - result = prime * result + ((size == null) ? 0 : size.hashCode()); - return result; + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + TemplateImpl that = TemplateImpl.class.cast(o); + return equal(this.image, that.image) && equal(this.hardware, that.hardware) + && equal(this.location, that.location) && equal(this.options, that.options); } @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - TemplateImpl other = (TemplateImpl) obj; - if (image == null) { - if (other.image != null) - return false; - } else if (!image.equals(other.image)) - return false; - if (location == null) { - if (other.location != null) - return false; - } else if (!location.equals(other.location)) - return false; - if (options == null) { - if (other.options != null) - return false; - } else if (!options.equals(other.options)) - return false; - if (size == null) { - if (other.size != null) - return false; - } else if (!size.equals(other.size)) - return false; - return true; + public int hashCode() { + return Objects.hashCode(image, hardware, location, options); } @Override public String toString() { - return "[location=" + location + ", image=" + image + ", size=" + size + ", options=" - + options + "]"; + return string().toString(); + } + + protected ToStringHelper string() { + ToStringHelper helper = Objects.toStringHelper("").omitNullValues().add("image", image).add("hardware", hardware) + .add("location", location); + if (!options.equals(defaultOptions())) + helper.add("options", options); + return helper; + } + + protected TemplateOptions defaultOptions() { + return TemplateOptions.NONE; } /** @@ -130,7 +118,7 @@ public class TemplateImpl implements Template { */ @Override public Template clone() { - return new TemplateImpl(image, size, location, options.clone()); + return new TemplateImpl(image, hardware, location, options.clone()); } } diff --git a/compute/src/main/java/org/jclouds/compute/domain/internal/VolumeImpl.java b/compute/src/main/java/org/jclouds/compute/domain/internal/VolumeImpl.java index fd71d11565..ea9206d4e1 100644 --- a/compute/src/main/java/org/jclouds/compute/domain/internal/VolumeImpl.java +++ b/compute/src/main/java/org/jclouds/compute/domain/internal/VolumeImpl.java @@ -18,11 +18,15 @@ */ package org.jclouds.compute.domain.internal; +import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import org.jclouds.compute.domain.Volume; import org.jclouds.javax.annotation.Nullable; +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; + /** * @author Adrian Cole */ @@ -30,13 +34,40 @@ public class VolumeImpl implements Volume { private final String id; private final Volume.Type type; - private final @Nullable - Float size; - private final @Nullable - String device; + @Nullable + private final Float size; + @Nullable + private final String device; private final boolean bootDevice; private final boolean durable; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + VolumeImpl that = VolumeImpl.class.cast(o); + return equal(this.id, that.id) && equal(this.getType(), that.getType()) && equal(this.size, that.size) + && equal(this.device, that.device) && equal(this.bootDevice, that.bootDevice) + && equal(this.durable, that.durable); + } + + @Override + public int hashCode() { + return Objects.hashCode(id, size, device, bootDevice, durable); + } + + @Override + public String toString() { + return string().toString(); + } + + protected ToStringHelper string() { + return Objects.toStringHelper("").omitNullValues().add("id", id).add("type", getType()).add("size", size) + .add("device", device).add("bootDevice", bootDevice).add("durable", durable); + } + public VolumeImpl(@Nullable String id, Volume.Type type, @Nullable Float size, @Nullable String device, boolean bootDevice, boolean durable) { this.id = id; @@ -103,62 +134,5 @@ public class VolumeImpl implements Volume { return bootDevice; } - /** - * {@inheritDoc} - */ - @Override - public String toString() { - return "[id=" + getId() + ", type=" + type + ", size=" + size + ", device=" + device + ", durable=" + durable - + ", isBootDevice=" + bootDevice + "]"; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (bootDevice ? 1231 : 1237); - result = prime * result + ((device == null) ? 0 : device.hashCode()); - result = prime * result + (durable ? 1231 : 1237); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((size == null) ? 0 : size.hashCode()); - result = prime * result + ((type == null) ? 0 : type.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - VolumeImpl other = (VolumeImpl) obj; - if (bootDevice != other.bootDevice) - return false; - if (device == null) { - if (other.device != null) - return false; - } else if (!device.equals(other.device)) - return false; - if (durable != other.durable) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (size == null) { - if (other.size != null) - return false; - } else if (!size.equals(other.size)) - return false; - if (type == null) { - if (other.type != null) - return false; - } else if (!type.equals(other.type)) - return false; - return true; - } } diff --git a/core/src/main/java/org/jclouds/domain/internal/LocationImpl.java b/core/src/main/java/org/jclouds/domain/internal/LocationImpl.java index 46153efe01..3931a8f15a 100644 --- a/core/src/main/java/org/jclouds/domain/internal/LocationImpl.java +++ b/core/src/main/java/org/jclouds/domain/internal/LocationImpl.java @@ -18,6 +18,7 @@ */ package org.jclouds.domain.internal; +import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.io.Serializable; @@ -28,6 +29,8 @@ import org.jclouds.domain.Location; import org.jclouds.domain.LocationScope; import org.jclouds.javax.annotation.Nullable; +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -46,6 +49,41 @@ public class LocationImpl implements Location, Serializable { private final Set iso3166Codes; private final Map metadata; + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + LocationImpl that = LocationImpl.class.cast(o); + return equal(this.scope, that.scope) && equal(this.id, that.id) && equal(this.parent, that.parent); + } + + @Override + public int hashCode() { + return Objects.hashCode(scope, id, parent); + } + + @Override + public String toString() { + return string().toString(); + } + + + protected ToStringHelper string() { + ToStringHelper helper = Objects.toStringHelper("").omitNullValues().add("scope", scope).add("id", id) + .add("description", description); + + if (parent != null) + helper.add("parent", parent.getId()); + + if (iso3166Codes.size() > 0) + helper.add("iso3166Codes", iso3166Codes); + if (metadata.size() > 0) + helper.add("metadata", metadata); + return helper; + } + public LocationImpl(LocationScope scope, String id, String description, @Nullable Location parent, Iterable iso3166Codes, Map metadata) { this.scope = checkNotNull(scope, "scope"); @@ -104,66 +142,4 @@ public class LocationImpl implements Location, Serializable { return metadata; } - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((description == null) ? 0 : description.hashCode()); - result = prime * result + ((id == null) ? 0 : id.hashCode()); - result = prime * result + ((iso3166Codes == null) ? 0 : iso3166Codes.hashCode()); - result = prime * result + ((metadata == null) ? 0 : metadata.hashCode()); - result = prime * result + ((parent == null) ? 0 : parent.hashCode()); - result = prime * result + ((scope == null) ? 0 : scope.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - LocationImpl other = (LocationImpl) obj; - if (description == null) { - if (other.description != null) - return false; - } else if (!description.equals(other.description)) - return false; - if (id == null) { - if (other.id != null) - return false; - } else if (!id.equals(other.id)) - return false; - if (iso3166Codes == null) { - if (other.iso3166Codes != null) - return false; - } else if (!iso3166Codes.equals(other.iso3166Codes)) - return false; - if (metadata == null) { - if (other.metadata != null) - return false; - } else if (!metadata.equals(other.metadata)) - return false; - if (parent == null) { - if (other.parent != null) - return false; - } else if (!parent.equals(other.parent)) - return false; - if (scope == null) { - if (other.scope != null) - return false; - } else if (!scope.equals(other.scope)) - return false; - return true; - } - - @Override - public String toString() { - return "[id=" + id + ", scope=" + scope + ", description=" + description + ", parent=" - + ((parent == null) ? null : parent.getId()) + ", iso3166Codes=" + iso3166Codes + ", metadata=" - + metadata + "]"; - } - } \ No newline at end of file diff --git a/core/src/main/java/org/jclouds/domain/internal/ResourceMetadataImpl.java b/core/src/main/java/org/jclouds/domain/internal/ResourceMetadataImpl.java index 6cf424517e..3040e18c7f 100644 --- a/core/src/main/java/org/jclouds/domain/internal/ResourceMetadataImpl.java +++ b/core/src/main/java/org/jclouds/domain/internal/ResourceMetadataImpl.java @@ -134,8 +134,8 @@ public abstract class ResourceMetadataImpl> implements Resourc } protected ToStringHelper string() { - return Objects.toStringHelper("").add("type", getType()).add("providerId", providerId).add("name", name).add( - "location", location).add("uri", uri).add("userMetadata", userMetadata); + return Objects.toStringHelper("").omitNullValues().add("type", getType()).add("providerId", providerId) + .add("name", name).add("location", location).add("uri", uri).add("userMetadata", userMetadata); } } \ No newline at end of file