softlayer: issue 971 adjusting builders and applying ConstructorProperties to domain objects

This commit is contained in:
Adam Lowe 2012-07-30 11:52:08 +01:00
parent ed8a1d640f
commit ec74987054
26 changed files with 1435 additions and 1340 deletions

View File

@ -56,7 +56,7 @@ public class ProductItems {
/**
* Creates a function to get the ProductItemPrice for the ProductItem. Currently returns the
* first price. This will need to be changed if more than one price is returned.
* first prices. This will need to be changed if more than one prices is returned.
*/
public static Function<ProductItem, ProductItemPrice> price() {
return new Function<ProductItem, ProductItemPrice>() {
@ -71,7 +71,7 @@ public class ProductItems {
/**
* Creates a function to get the ProductItem for the ProductItemPrice. Copies the category
* information from the price to the item if necessary The ProductItemPrices must have
* information from the prices to the item if necessary The ProductItemPrices must have
* ProductItems.
*/
public static Function<ProductItemPrice, ProductItem> item() {
@ -80,7 +80,7 @@ public class ProductItems {
public ProductItem apply(ProductItemPrice productItemPrice) {
Set<ProductItemCategory> categories = productItemPrice.getCategories();
ProductItem item = productItemPrice.getItem();
ProductItem.Builder builder = ProductItem.Builder.fromProductItem(productItemPrice.getItem());
ProductItem.Builder builder = productItemPrice.getItem().toBuilder();
if (item.getCategories().size() == 0 && categories.size() != 0) {
builder.categories(categories);
}

View File

@ -47,7 +47,7 @@ import com.google.common.collect.Iterables;
/**
* Converts a set of ProductItems to Hardware. All cores have a speed of 2.0Ghz The Hardware Id will
* be a comma separated list containing the price ids: cpus,ram,volume
* be a comma separated list containing the prices ids: cpus,ram,volume
*
* @author Jason King
*/

View File

@ -126,7 +126,7 @@ public class SoftLayerComputeServiceAdapter implements
ProductOrder order = ProductOrder.builder().packageId(productPackageSupplier.get().getId())
.location(template.getLocation().getId()).quantity(1).useHourlyPricing(true).prices(getPrices(template))
.virtualGuest(newGuest).build();
.virtualGuests(newGuest).build();
logger.debug(">> ordering new virtualGuest domain(%s) hostname(%s)", domainName, name);
ProductOrderReceipt productOrderReceipt = client.getVirtualGuestClient().orderVirtualGuest(order);

View File

@ -18,28 +18,10 @@
*/
package org.jclouds.softlayer.config;
import java.lang.reflect.Type;
import java.util.Date;
import java.util.Map;
import javax.inject.Singleton;
import org.jclouds.json.config.GsonModule.DateAdapter;
import org.jclouds.json.config.GsonModule.Iso8601DateAdapter;
import org.jclouds.softlayer.domain.Datacenter;
import org.jclouds.softlayer.domain.OperatingSystem;
import org.jclouds.softlayer.domain.PowerState;
import org.jclouds.softlayer.domain.VirtualGuest;
import com.google.common.collect.ImmutableMap;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
/**
*
@ -47,72 +29,6 @@ import com.google.inject.Provides;
*/
public class SoftLayerParserModule extends AbstractModule {
@Singleton
public static class VirtualGuestAdapter implements JsonSerializer<VirtualGuest>, JsonDeserializer<VirtualGuest> {
public JsonElement serialize(VirtualGuest src, Type typeOfSrc, JsonSerializationContext context) {
return context.serialize(src);
}
public VirtualGuest deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
return apply(context.<VirtualGuestInternal> deserialize(json, VirtualGuestInternal.class));
}
public VirtualGuest apply(VirtualGuestInternal in) {
return in;
}
/**
* Internal class that flattens billingItem into billingItemId
*/
public static class VirtualGuestInternal extends VirtualGuest {
private BillingItem billingItem;
public VirtualGuestInternal(int accountId, Date createDate, boolean dedicatedAccountHostOnly, String domain,
String fullyQualifiedDomainName, String hostname, int id, Date lastVerifiedDate, int maxCpu,
String maxCpuUnits, int maxMemory, Date metricPollDate, Date modifyDate, String notes,
boolean privateNetworkOnly, int startCpus, int statusId, String uuid, String primaryBackendIpAddress,
String primaryIpAddress, int billingItemId, OperatingSystem operatingSystem, Datacenter datacenter,
PowerState powerState) {
super(accountId, createDate, dedicatedAccountHostOnly, domain, fullyQualifiedDomainName, hostname, id,
lastVerifiedDate, maxCpu, maxCpuUnits, maxMemory, metricPollDate, modifyDate, notes,
privateNetworkOnly, startCpus, statusId, uuid, primaryBackendIpAddress, primaryIpAddress,
billingItemId, operatingSystem, datacenter, powerState);
}
@Override
public int getBillingItemId() {
return billingItem != null ? billingItem.id : -1;
}
}
public static class BillingItem {
private int id = -1;
// for deserializer
BillingItem() {
}
public BillingItem(int id) {
this.id = id;
}
@Override
public String toString() {
return "[id=" + id + "]";
}
}
}
@Provides
@Singleton
public Map<Type, Object> provideCustomAdapterBindings() {
return ImmutableMap.<Type, Object> of(VirtualGuest.class, new VirtualGuestAdapter());
}
@Override
protected void configure() {
bind(DateAdapter.class).to(Iso8601DateAdapter.class);

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -21,135 +21,156 @@ package org.jclouds.softlayer.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.emptyToNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* Class Address
*
* @author Jason King
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Account_Address"
* />
/>
*/
public class Address implements Comparable<Address> {
public static Builder builder() {
return new Builder();
public class Address {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String country;
private String state;
private String description;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromAddress(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String country;
protected String state;
protected String description;
/**
* @see Address#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder country(String country) {
/**
* @see Address#getCountry()
*/
public T country(String country) {
this.country = country;
return this;
return self();
}
public Builder state(String state) {
/**
* @see Address#getState()
*/
public T state(String state) {
this.state = state;
return this;
return self();
}
public Builder description(String description) {
/**
* @see Address#getDescription()
*/
public T description(String description) {
this.description = description;
return this;
return self();
}
public Address build() {
return new Address(id, country, state, description);
}
public static Builder fromAddress(Address in) {
return Address.builder().id(in.getId())
public T fromAddress(Address in) {
return this
.id(in.getId())
.country(in.getCountry())
.state(in.getState())
.description(in.getDescription());
}
}
private int id = -1;
private String country;
private String state;
private String description;
// for deserializer
Address() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public Address(int id, String country, String state, String description) {
private final int id;
private final String country;
private final String state;
private final String description;
@ConstructorProperties({
"id", "country", "state", "description"
})
protected Address(int id, String country, @Nullable String state, @Nullable String description) {
this.id = id;
this.country = checkNotNull(emptyToNull(country),"country cannot be null or empty:"+country);
this.state = state;
this.description = description;
}
@Override
public int compareTo(Address arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
}
/**
* @return The unique id of the address.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The country of the address.
*/
public String getCountry() {
return country;
return this.country;
}
/**
* @return The state of the address.
*/
@Nullable
public String getState() {
return state;
return this.state;
}
/**
* @return The description of the address.
*/
@Nullable
public String getDescription() {
return description;
}
public Builder toBuilder() {
return Builder.fromAddress(this);
return this.description;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Address other = (Address) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Address that = Address.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("country", country).add("state", state).add("description", description);
}
@Override
public String toString() {
return "[id=" + id + ", country=" + country + ", state=" + state + ", description=" + description + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,161 +20,186 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* Class Datacenter
*
* @author Adrian Cole
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Location_Datacenter"
* />
/>
*/
public class Datacenter implements Comparable<Datacenter> {
public static Builder builder() {
return new Builder();
public class Datacenter {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String name;
private String longName;
private Address locationAddress;
private Set<Region> regions = Sets.newLinkedHashSet();
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromDatacenter(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected String longName;
protected Address locationAddress;
protected Set<Region> regions = ImmutableSet.of();
/**
* @see Datacenter#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder name(String name) {
/**
* @see Datacenter#getName()
*/
public T name(String name) {
this.name = name;
return this;
return self();
}
public Builder longName(String longName) {
/**
* @see Datacenter#getLongName()
*/
public T longName(String longName) {
this.longName = longName;
return this;
return self();
}
public Builder locationAddress(Address locationAddress) {
/**
* @see Datacenter#getLocationAddress()
*/
public T locationAddress(Address locationAddress) {
this.locationAddress = locationAddress;
return this;
return self();
}
public Builder region(Region regions) {
this.regions.add(checkNotNull(regions, "regions"));
return this;
/**
* @see Datacenter#getRegions()
*/
public T regions(Set<Region> regions) {
this.regions = ImmutableSet.copyOf(checkNotNull(regions, "regions"));
return self();
}
public Builder regions(Iterable<Region> regions) {
this.regions = ImmutableSet.<Region> copyOf(checkNotNull(regions, "regions"));
return this;
public T regions(Region... in) {
return regions(ImmutableSet.copyOf(in));
}
public Datacenter build() {
return new Datacenter(id, name, longName, locationAddress, regions);
}
public static Builder fromDatacenter(Datacenter in) {
return Datacenter.builder().id(in.getId()).name(in.getName())
.longName(in.getLongName()).locationAddress(in.getLocationAddress())
public T fromDatacenter(Datacenter in) {
return this
.id(in.getId())
.name(in.getName())
.longName(in.getLongName())
.locationAddress(in.getLocationAddress())
.regions(in.getRegions());
}
}
private int id = -1;
private String name;
private String longName;
private Address locationAddress;
private Set<Region> regions = Sets.newLinkedHashSet();
// for deserializer
Datacenter() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public Datacenter(int id, String name, String longName, Address locationAddress, Iterable<Region> regions) {
private final int id;
private final String name;
private final String longName;
private final Address locationAddress;
private final Set<Region> regions;
@ConstructorProperties({
"id", "name", "longName", "locationAddress", "regions"
})
protected Datacenter(int id, @Nullable String name, @Nullable String longName, @Nullable Address locationAddress, @Nullable Set<Region> regions) {
this.id = id;
this.name = name;
this.longName = longName;
this.locationAddress = locationAddress;
this.regions = ImmutableSet.<Region> copyOf(checkNotNull(regions, "regions"));
}
@Override
public int compareTo(Datacenter arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
this.regions = regions == null ? ImmutableSet.<Region>of() : ImmutableSet.copyOf(regions);
}
/**
* @return The unique identifier of a specific location.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return A short location description.
*/
@Nullable
public String getName() {
return name;
return this.name;
}
/**
* @return A longer location description.
*/
@Nullable
public String getLongName() {
return longName;
return this.longName;
}
/**
* @return A location's physical address (optional).
*/
@Nullable
public Address getLocationAddress() {
return locationAddress;
return this.locationAddress;
}
/**
* A location can be a member of 1 or more regions.
* Sometimes the list of regions is empty, for example as a new Datacenter is being added.
* The list of regions usually contains one with keyName=FIRST_AVAILABLE which should be ignored.
*
* @return The regions to which a location belongs.
*/
public Set<Region> getRegions() {
return regions;
}
public Builder toBuilder() {
return Builder.fromDatacenter(this);
return this.regions;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Datacenter other = (Datacenter) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Datacenter that = Datacenter.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("longName", longName).add("locationAddress", locationAddress).add("regions", regions);
}
@Override
public String toString() {
return "[id=" + id + ", country=" + name + ", state=" + longName + "], locationAddress=" + locationAddress + ", regions="+regions+"]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,118 +20,123 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* Extends the SoftLayer_Software_Component data type to include operating system specific properties.
*
* @author Jason King
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Software_Component_OperatingSystem"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Software_Component_OperatingSystem"
/>
*/
public class OperatingSystem implements Comparable<OperatingSystem> {
public class OperatingSystem {
// There are other properties
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private Set<Password> passwords = Sets.newLinkedHashSet();
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromOperatingSystem(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected Set<Password> passwords = ImmutableSet.of();
/**
* @see OperatingSystem#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder password(Password password) {
this.passwords.add(checkNotNull(password, "password"));
return this;
/**
* @see OperatingSystem#getPasswords()
*/
public T passwords(Set<Password> passwords) {
this.passwords = ImmutableSet.copyOf(checkNotNull(passwords, "passwords"));
return self();
}
public Builder passwords(Iterable<Password> passwords) {
this.passwords = ImmutableSet.<Password> copyOf(checkNotNull(passwords, "passwords"));
return this;
public T passwords(Password... in) {
return passwords(ImmutableSet.copyOf(in));
}
public OperatingSystem build() {
return new OperatingSystem(id, passwords);
}
public static Builder fromOperatingSystem(OperatingSystem in) {
return OperatingSystem.builder()
public T fromOperatingSystem(OperatingSystem in) {
return this
.id(in.getId())
.passwords(in.getPasswords());
}
}
private int id = -1;
private Set<Password> passwords = Sets.newLinkedHashSet();
// for deserializer
OperatingSystem() {
}
public OperatingSystem(int id,Iterable<Password> passwords) {
this.id = id;
this.passwords = ImmutableSet.<Password> copyOf(checkNotNull(passwords, "passwords"));
}
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
public int compareTo(OperatingSystem arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
protected ConcreteBuilder self() {
return this;
}
}
private final int id;
private final Set<Password> passwords;
@ConstructorProperties({
"id", "passwords"
})
protected OperatingSystem(int id, @Nullable Set<Password> passwords) {
this.id = id;
this.passwords = passwords == null ? ImmutableSet.<Password>of() : ImmutableSet.copyOf(passwords);
}
/**
* @return An ID number identifying this Software Component (Software Installation)
*/
public int getId() {
return id;
return this.id;
}
/**
*
* @return Username/Password pairs used for access to this Software Installation.
*/
public Set<Password> getPasswords() {
return passwords;
}
public Builder toBuilder() {
return Builder.fromOperatingSystem(this);
return this.passwords;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
OperatingSystem other = (OperatingSystem) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
OperatingSystem that = OperatingSystem.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("passwords", passwords);
}
@Override
public String toString() {
return "[id=" + id + ", passwords=" + passwords + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -21,121 +21,134 @@ package org.jclouds.softlayer.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.emptyToNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
*
* Contains a password for a specific software component instance
*
* @author Jason King
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Software_Component_Password"
* />
/>
*/
public class Password implements Comparable<Password> {
public static Builder builder() {
return new Builder();
public class Password {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String username;
private String password;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromPassword(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String username;
protected String password;
/**
* @see Password#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder username(String username) {
/**
* @see Password#getUsername()
*/
public T username(String username) {
this.username = username;
return this;
return self();
}
public Builder password(String password) {
/**
* @see Password#getPassword()
*/
public T password(String password) {
this.password = password;
return this;
return self();
}
public Password build() {
return new Password(id, username, password);
}
public static Builder fromPassword(Password in) {
return Password.builder().id(in.getId())
public T fromPassword(Password in) {
return this
.id(in.getId())
.username(in.getUsername())
.password(in.getPassword());
}
}
private int id = -1;
private String username;
private String password;
// for deserializer
Password() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public Password(int id, String username, String password) {
private final int id;
private final String username;
private final String password;
@ConstructorProperties({"id", "username", "password"})
public Password(int id, String username, @Nullable String password) {
this.id = id;
this.username = checkNotNull(emptyToNull(username),"username cannot be null or empty:"+username);
this.password = password;
}
@Override
public int compareTo(Password arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
}
/**
* @return An id number for this specific username/password pair.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The username part of the username/password pair.
*/
@Nullable
public String getUsername() {
return username;
return this.username;
}
/**
* @return The password part of the username/password pair.
*/
@Nullable
public String getPassword() {
return password;
}
public Builder toBuilder() {
return Builder.fromPassword(this);
return this.password;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Password other = (Password) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Password that = Password.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("username", username).add("password", password);
}
@Override
public String toString() {
return "Password [id=" + id + ", username=" + username + ", password=**********]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,83 +20,98 @@ package org.jclouds.softlayer.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;
/**
* The power state class provides a common set of values for which a guest's power state will be presented in the SoftLayer API.
*
* @author Jason King
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest_Power_State"
* />
/>
*/
public class PowerState implements Comparable<PowerState> {
public static Builder builder() {
return new Builder();
public class PowerState {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private VirtualGuest.State keyName;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromPowerState(this);
}
public Builder keyName(VirtualGuest.State keyName) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected VirtualGuest.State keyName;
/**
* @see PowerState#getKeyName()
*/
public T keyName(VirtualGuest.State keyName) {
this.keyName = keyName;
return this;
return self();
}
public PowerState build() {
return new PowerState(keyName);
}
public static Builder fromAddress(PowerState in) {
return PowerState.builder().keyName(in.getKeyName());
public T fromPowerState(PowerState in) {
return this
.keyName(in.getKeyName());
}
}
private VirtualGuest.State keyName;
// for deserializer
PowerState() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
private final VirtualGuest.State keyName;
@ConstructorProperties("keyName")
public PowerState(VirtualGuest.State keyName) {
this.keyName = checkNotNull(keyName,"keyName cannot be null or empty:"+keyName);
}
@Override
public int compareTo(PowerState arg0) {
return keyName.compareTo(arg0.keyName);
}
/**
* Maps onto {@code VirtualGuest.State}
* @return The key name of a power state.
*
* @return The key name of a power state.
*/
@Nullable
public VirtualGuest.State getKeyName() {
return keyName;
}
public Builder toBuilder() {
return Builder.fromAddress(this);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PowerState that = (PowerState) o;
if (keyName != null ? !keyName.equals(that.keyName) : that.keyName != null)
return false;
return true;
return this.keyName;
}
@Override
public int hashCode() {
return keyName != null ? keyName.hashCode() : 0;
return Objects.hashCode(keyName);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
PowerState that = PowerState.class.cast(obj);
return Objects.equal(this.keyName, that.keyName);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("keyName", keyName);
}
@Override
public String toString() {
return "[keyName=" + keyName + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,12 +20,14 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* The SoftLayer_Product_Item data type contains general information relating to
@ -33,71 +35,92 @@ import com.google.common.collect.Sets;
*
* @author Adrian Cole
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item"
/>
*/
public class ProductItem implements Comparable<ProductItem> {
public class ProductItem {
// TODO there are more elements than this.
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String description;
private String units;
private Float capacity;
private Set<ProductItemPrice> prices = Sets.newLinkedHashSet();
private Set<ProductItemCategory> categories = Sets.newLinkedHashSet();
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductItem(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String description;
protected String units;
protected Float capacity;
protected Set<ProductItemPrice> prices = ImmutableSet.of();
protected Set<ProductItemCategory> categories = ImmutableSet.of();
/**
* @see ProductItem#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder description(String description) {
/**
* @see ProductItem#getDescription()
*/
public T description(String description) {
this.description = description;
return this;
return self();
}
public Builder units(String units) {
/**
* @see ProductItem#getUnits()
*/
public T units(String units) {
this.units = units;
return this;
return self();
}
public Builder capacity(Float capacity) {
/**
* @see ProductItem#getCapacity()
*/
public T capacity(Float capacity) {
this.capacity = capacity;
return this;
return self();
}
public Builder price(ProductItemPrice prices) {
this.prices.add(checkNotNull(prices, "prices"));
return this;
/**
* @see ProductItem#getPrices()
*/
public T prices(Set<ProductItemPrice> prices) {
this.prices = ImmutableSet.copyOf(checkNotNull(prices, "prices"));
return self();
}
public Builder prices(Iterable<ProductItemPrice> prices) {
this.prices = ImmutableSet.<ProductItemPrice> copyOf(checkNotNull(prices, "prices"));
return this;
public T prices(ProductItemPrice... in) {
return prices(ImmutableSet.copyOf(in));
}
public Builder category(ProductItemCategory categories) {
this.categories.add(checkNotNull(categories, "categories"));
return this;
/**
* @see ProductItem#getCategories()
*/
public T categories(Set<ProductItemCategory> categories) {
this.categories = ImmutableSet.copyOf(checkNotNull(categories, "categories"));
return self();
}
public Builder categories(Iterable<ProductItemCategory> categories) {
this.categories = ImmutableSet.<ProductItemCategory> copyOf(checkNotNull(categories, "categories"));
return this;
public T categories(ProductItemCategory... in) {
return categories(ImmutableSet.copyOf(in));
}
public ProductItem build() {
return new ProductItem(id, description, units, capacity, prices, categories);
}
public static Builder fromProductItem(ProductItem in) {
return ProductItem.builder().id(in.getId())
public T fromProductItem(ProductItem in) {
return this
.id(in.getId())
.description(in.getDescription())
.units(in.getUnits())
.capacity(in.getCapacity())
@ -106,45 +129,45 @@ public class ProductItem implements Comparable<ProductItem> {
}
}
private int id = -1;
private String description;
private String units;
private Float capacity;
private Set<ProductItemPrice> prices = Sets.newLinkedHashSet();
private Set<ProductItemCategory> categories = Sets.newLinkedHashSet();
// for deserializer
ProductItem() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductItem(int id, String description, String units, Float capacity,
Iterable<ProductItemPrice> prices, Iterable<ProductItemCategory> categories) {
private final int id;
private final String description;
private final String units;
private final Float capacity;
private final Set<ProductItemPrice> prices;
private final Set<ProductItemCategory> categories;
@ConstructorProperties({
"id", "description", "units", "capacity", "prices", "categories"
})
protected ProductItem(int id, @Nullable String description, @Nullable String units, @Nullable Float capacity, @Nullable Set<ProductItemPrice> prices, @Nullable Set<ProductItemCategory> categories) {
this.id = id;
this.description = description;
this.units = units;
this.capacity = capacity;
this.prices = ImmutableSet.<ProductItemPrice> copyOf(checkNotNull(prices, "prices"));
this.categories = ImmutableSet.<ProductItemCategory> copyOf(checkNotNull(categories, "categories"));
}
@Override
public int compareTo(ProductItem arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
this.prices = prices == null ? ImmutableSet.<ProductItemPrice>of() : ImmutableSet.copyOf(prices);
this.categories = categories == null ? ImmutableSet.<ProductItemCategory>of() : ImmutableSet.copyOf(categories);
}
/**
* @return The unique identifier of a specific location.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return A product's description
*/
@Nullable
public String getDescription() {
return description;
return this.description;
}
/**
@ -152,64 +175,54 @@ public class ProductItem implements Comparable<ProductItem> {
*/
@Nullable
public String getUnits() {
return units;
return this.units;
}
/**
* @return Some Product Items have capacity information such as RAM and
* bandwidth, and others. This provides the numerical representation
* of the capacity given in the description of this product item.
bandwidth, and others. This provides the numerical representation
of the capacity given in the description of this product item.
*/
@Nullable
public Float getCapacity() {
return capacity;
return this.capacity;
}
/**
*
* @return A product item's prices.
*/
public Set<ProductItemPrice> getPrices() {
return prices;
return this.prices;
}
/**
*
* @return An item's associated item categories.
*/
public Set<ProductItemCategory> getCategories() {
return categories;
}
public Builder toBuilder() {
return Builder.fromProductItem(this);
return this.categories;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProductItem other = (ProductItem) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductItem that = ProductItem.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("description", description).add("units", units).add("capacity", capacity).add("prices", prices).add("categories", categories);
}
@Override
public String toString() {
return "ProductItem [id=" + id + ", description=" + description + ", units=" + units + ", capacity=" + capacity
+ ", prices=" + prices + ", categories=" + categories + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,123 +18,139 @@
*/
package org.jclouds.softlayer.domain;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* The SoftLayer_Product_Item_Category data type contains
* general category information for prices.
*
* @author Jason King
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item_Category"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item_Category"
/>
*/
public class ProductItemCategory implements Comparable<ProductItemCategory> {
public class ProductItemCategory {
// TODO there are more elements than this.
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String name;
private String categoryCode;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductItemCategory(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected String categoryCode;
/**
* @see ProductItemCategory#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder name(String name) {
/**
* @see ProductItemCategory#getName()
*/
public T name(String name) {
this.name = name;
return this;
return self();
}
public Builder categoryCode(String categoryCode) {
/**
* @see ProductItemCategory#getCategoryCode()
*/
public T categoryCode(String categoryCode) {
this.categoryCode = categoryCode;
return this;
return self();
}
public ProductItemCategory build() {
return new ProductItemCategory(id, name, categoryCode);
}
public static Builder fromProductItemCategory(ProductItemCategory in) {
return ProductItemCategory.builder().id(in.getId())
public T fromProductItemCategory(ProductItemCategory in) {
return this
.id(in.getId())
.name(in.getName())
.categoryCode(in.getCategoryCode());
}
}
private int id = -1;
private String name;
private String categoryCode;
// for deserializer
ProductItemCategory() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductItemCategory(int id, String name, String categoryCode) {
private final int id;
private final String name;
private final String categoryCode;
@ConstructorProperties({
"id", "name", "categoryCode"
})
protected ProductItemCategory(int id, @Nullable String name, @Nullable String categoryCode) {
this.id = id;
this.name = name;
this.categoryCode = categoryCode;
}
@Override
public int compareTo(ProductItemCategory arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
}
/**
* @return The unique identifier of a specific location.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The friendly, descriptive name of the category as seen on the order forms and on invoices.
*/
@Nullable
public String getName() {
return name;
return this.name;
}
/**
* @return The code used to identify this category.
*/
@Nullable
public String getCategoryCode() {
return categoryCode;
}
public Builder toBuilder() {
return Builder.fromProductItemCategory(this);
return this.categoryCode;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProductItemCategory other = (ProductItemCategory) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductItemCategory that = ProductItemCategory.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("categoryCode", categoryCode);
}
@Override
public String toString() {
return "ProductItemCategory [id=" + id + ", name=" + name + ", categoryCode=" + categoryCode + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,183 +20,209 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* The SoftLayer_Product_Item_Price data type contains general information
* relating to a single SoftLayer product item price. You can find out what
* packages each price is in as well as which category under which this price is
* relating to a single SoftLayer product item prices. You can find out what
* packages each prices is in as well as which category under which this prices is
* sold. All prices are returned in Floating point values measured in US Dollars
* ($USD).
*
* @author Adrian Cole
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item_Price"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Item_Price"
/>
*/
public class ProductItemPrice implements Comparable<ProductItemPrice> {
// TODO there are more elements than this.
public class ProductItemPrice {
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private long itemId = -1;
private Float recurringFee;
private Float hourlyRecurringFee;
private ProductItem item;
private Set<ProductItemCategory> categories = Sets.newLinkedHashSet();
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductItemPrice(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected long itemId;
protected Float recurringFee;
protected Float hourlyRecurringFee;
protected ProductItem item;
protected Set<ProductItemCategory> categories = ImmutableSet.of();
/**
* @see ProductItemPrice#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder itemId(long itemId) {
/**
* @see ProductItemPrice#getItemId()
*/
public T itemId(long itemId) {
this.itemId = itemId;
return this;
return self();
}
public Builder recurringFee(Float recurringFee) {
/**
* @see ProductItemPrice#getRecurringFee()
*/
public T recurringFee(Float recurringFee) {
this.recurringFee = recurringFee;
return this;
return self();
}
public Builder hourlyRecurringFee(Float hourlyRecurringFee) {
/**
* @see ProductItemPrice#getHourlyRecurringFee()
*/
public T hourlyRecurringFee(Float hourlyRecurringFee) {
this.hourlyRecurringFee = hourlyRecurringFee;
return this;
return self();
}
public Builder item(ProductItem item) {
/**
* @see ProductItemPrice#getItem()
*/
public T item(ProductItem item) {
this.item = item;
return this;
return self();
}
public Builder category(ProductItemCategory categories) {
this.categories.add(checkNotNull(categories, "categories"));
return this;
/**
* @see ProductItemPrice#getCategories()
*/
public T categories(Set<ProductItemCategory> categories) {
this.categories = ImmutableSet.copyOf(checkNotNull(categories, "categories"));
return self();
}
public Builder categories(Iterable<ProductItemCategory> categories) {
this.categories = ImmutableSet.<ProductItemCategory> copyOf(checkNotNull(categories, "categories"));
return this;
public T categories(ProductItemCategory... in) {
return categories(ImmutableSet.copyOf(in));
}
public ProductItemPrice build() {
return new ProductItemPrice(id, itemId, recurringFee, hourlyRecurringFee, item, categories);
}
public static Builder fromPrice(ProductItemPrice in) {
return ProductItemPrice.builder().id(in.getId()).itemId(in.getItemId())
.hourlyRecurringFee(in.getHourlyRecurringFee()).recurringFee(in.getRecurringFee());
public T fromProductItemPrice(ProductItemPrice in) {
return this
.id(in.getId())
.itemId(in.getItemId())
.recurringFee(in.getRecurringFee())
.hourlyRecurringFee(in.getHourlyRecurringFee())
.item(in.getItem())
.categories(in.getCategories());
}
}
private int id = -1;
private long itemId = -1;
private Float recurringFee;
private Float hourlyRecurringFee;
private ProductItem item;
private Set<ProductItemCategory> categories = Sets.newLinkedHashSet();
// for deserializer
ProductItemPrice() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductItemPrice(int id, long itemId, Float recurringFee, Float hourlyRecurringFee, ProductItem item, Iterable<ProductItemCategory> categories) {
private final int id;
private final long itemId;
private final Float recurringFee;
private final Float hourlyRecurringFee;
private final ProductItem item;
private final Set<ProductItemCategory> categories;
@ConstructorProperties({
"id", "itemId", "recurringFee", "hourlyRecurringFee", "item", "categories"
})
protected ProductItemPrice(int id, long itemId, @Nullable Float recurringFee, @Nullable Float hourlyRecurringFee, @Nullable ProductItem item, @Nullable Set<ProductItemCategory> categories) {
this.id = id;
this.itemId = itemId;
this.recurringFee = recurringFee;
this.hourlyRecurringFee = hourlyRecurringFee;
this.item = item;
this.categories = ImmutableSet.<ProductItemCategory> copyOf(checkNotNull(categories, "categories"));
}
@Override
public int compareTo(ProductItemPrice arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
this.categories = categories == null ? ImmutableSet.<ProductItemCategory>of() : ImmutableSet.copyOf(categories);
}
/**
* @return The unique identifier of a Product Item Price.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The unique identifier for a product Item
*/
public long getItemId() {
return itemId;
return this.itemId;
}
/**
* @return A recurring fee is a fee that happens every billing period. This
* fee is represented as a Floating point decimal in US dollars
* ($USD).
fee is represented as a Floating point decimal in US dollars
($USD).
*/
@Nullable
public Float getRecurringFee() {
return recurringFee;
return this.recurringFee;
}
/**
* @return The hourly price for this item, should this item be part of an
* hourly pricing package.
* @return The hourly prices for this item, should this item be part of an
hourly pricing package.
*/
@Nullable
public Float getHourlyRecurringFee() {
return hourlyRecurringFee;
return this.hourlyRecurringFee;
}
/**
* @return The product item a prices is tied to.
*/
@Nullable
public ProductItem getItem() {
return this.item;
}
/**
*
* @return An item's associated item categories.
*/
public Set<ProductItemCategory> getCategories() {
return categories;
}
/**
* @return The product item a price is tied to.
*/
public ProductItem getItem() {
return item;
}
public Builder toBuilder() {
return Builder.fromPrice(this);
}
@Override
public String toString() {
return "[id=" + id + ", itemId=" + itemId + ", recurringFee=" + recurringFee + ", hourlyRecurringFee="
+ hourlyRecurringFee + ", item="+item+", categories="+categories+"]";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductItemPrice that = (ProductItemPrice) o;
if (id != that.id) return false;
return true;
return this.categories;
}
@Override
public int hashCode() {
return (id ^ (id >>> 32));
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductItemPrice that = ProductItemPrice.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("itemId", itemId).add("recurringFee", recurringFee).add("hourlyRecurringFee", hourlyRecurringFee).add("item", item).add("categories", categories);
}
@Override
public String toString() {
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,93 +20,105 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* Class ProductOrder
*
* @author Jason King
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Product_Order_Virtual_Guest"
* />
/>
*/
public class ProductOrder {
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int packageId = -1;
private Set<ProductItemPrice> prices = Sets.newLinkedHashSet();
private Set<VirtualGuest> virtualGuests = Sets.newLinkedHashSet();
private String location;
private int quantity;
private boolean useHourlyPricing;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductOrder(this);
}
public Builder packageId(int packageId) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int packageId;
protected String location;
protected Set<ProductItemPrice> prices = ImmutableSet.of();
protected Set<VirtualGuest> virtualGuests = ImmutableSet.of();
protected int quantity;
protected boolean useHourlyPricing;
/**
* @see ProductOrder#getPackageId()
*/
public T packageId(int packageId) {
this.packageId = packageId;
return this;
return self();
}
/**
* Adds a price to the order
* All that is required to send in is the price ID of each item desired to be ordered.
* @param prices
* The Prices of the item desired to be ordered
* @see ProductOrder#getLocation()
*/
public Builder price(ProductItemPrice prices) {
this.prices.add(checkNotNull(prices, "prices"));
return this;
}
/**
* Adds multiple prices to the order, overwriting any existing ones
* All that is required to send in is the price ID of each item desired to be ordered.
* @param prices
* The Prices of the items desired to be ordered
*/
public Builder prices(Iterable<ProductItemPrice> prices) {
this.prices = ImmutableSet.<ProductItemPrice> copyOf(checkNotNull(prices, "prices"));
return this;
}
/**
* Adds a virtualGuest to the order
* @param virtualGuest
* The virtualGuest to add. Needs domain and hostname.
*/
public Builder virtualGuest(VirtualGuest virtualGuest) {
this.virtualGuests.add(checkNotNull(virtualGuest, "virtualGuest"));
return this;
}
public Builder virtualGuests(Iterable<VirtualGuest> virtualGuests) {
this.virtualGuests = ImmutableSet.<VirtualGuest> copyOf(checkNotNull(virtualGuests, "virtualGuests"));
return this;
}
public Builder location(String location) {
public T location(String location) {
this.location = location;
return this;
return self();
}
public Builder quantity(int quantity) {
/**
* @see ProductOrder#getPrices()
*/
public T prices(Iterable<ProductItemPrice> prices) {
this.prices = ImmutableSet.copyOf(checkNotNull(prices, "prices"));
return self();
}
public T prices(ProductItemPrice... in) {
return prices(ImmutableSet.copyOf(in));
}
/**
* @see ProductOrder#getVirtualGuests()
*/
public T virtualGuests(Set<VirtualGuest> virtualGuests) {
this.virtualGuests = ImmutableSet.copyOf(checkNotNull(virtualGuests, "virtualGuests"));
return self();
}
public T virtualGuests(VirtualGuest... in) {
return virtualGuests(ImmutableSet.copyOf(in));
}
/**
* @see ProductOrder#getQuantity()
*/
public T quantity(int quantity) {
this.quantity = quantity;
return this;
return self();
}
public Builder useHourlyPricing(Boolean useHourlyPricing) {
/**
* @see ProductOrder#getUseHourlyPricing()
*/
public T useHourlyPricing(boolean useHourlyPricing) {
this.useHourlyPricing = useHourlyPricing;
return this;
return self();
}
public ProductOrder build() {
return new ProductOrder(packageId, location,prices, virtualGuests, quantity, useHourlyPricing);
return new ProductOrder(packageId, location, prices, virtualGuests, quantity, useHourlyPricing);
}
public static Builder fromProductOrder(ProductOrder in) {
return ProductOrder.builder().packageId(in.getPackageId())
public T fromProductOrder(ProductOrder in) {
return this
.packageId(in.getPackageId())
.location(in.getLocation())
.prices(in.getPrices())
.virtualGuests(in.getVirtualGuests())
@ -115,23 +127,28 @@ public class ProductOrder {
}
}
private int packageId = -1;
private String location;
private Set<ProductItemPrice> prices = Sets.newLinkedHashSet();
private Set<VirtualGuest> virtualGuests = Sets.newLinkedHashSet();
private int quantity;
private boolean useHourlyPricing;
// for deserializer
ProductOrder() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductOrder(int packageId, String location, Iterable<ProductItemPrice> prices, Iterable<VirtualGuest> virtualGuest, int quantity, boolean useHourlyPricing) {
private final int packageId;
private final String location;
private final Set<ProductItemPrice> prices;
private final Set<VirtualGuest> virtualGuests;
private final int quantity;
private final boolean useHourlyPricing;
@ConstructorProperties({
"packageId", "location", "prices", "virtualGuest", "quantity", "useHourlyPricing"
})
protected ProductOrder(int packageId, @Nullable String location, @Nullable Set<ProductItemPrice> prices, @Nullable Set<VirtualGuest> virtualGuests, int quantity, boolean useHourlyPricing) {
this.packageId = packageId;
this.location = location;
this.prices = ImmutableSet.<ProductItemPrice> copyOf(checkNotNull(prices, "prices"));
this.virtualGuests = ImmutableSet.<VirtualGuest> copyOf(checkNotNull(virtualGuest, "virtualGuest"));
this.prices = prices == null ? ImmutableSet.<ProductItemPrice>of() : ImmutableSet.copyOf(prices);
this.virtualGuests = virtualGuests == null ? ImmutableSet.<VirtualGuest>of() : ImmutableSet.copyOf(virtualGuests);
this.quantity = quantity;
this.useHourlyPricing = useHourlyPricing;
}
@ -140,79 +157,70 @@ public class ProductOrder {
* @return The package id of an order. This is required.
*/
public int getPackageId() {
return packageId;
return this.packageId;
}
/**
* @return The region keyname or specific location keyname where the order should be provisioned.
*/
@Nullable
public String getLocation() {
return location;
return this.location;
}
/**
* Gets the item prices in this order.
* All that is required to be present is the price ID
* All that is required to be present is the prices ID
*
* @return the prices.
*/
public Set<ProductItemPrice> getPrices() {
return prices;
return this.prices;
}
/**
* Gets the virtual guests in this order.
*
* @return the the virtual guests.
*/
public Set<VirtualGuest> getVirtualGuests() {
return virtualGuests;
return this.virtualGuests;
}
public int getQuantity() {
return quantity;
return this.quantity;
}
public boolean getUseHourlyPricing() {
return useHourlyPricing;
}
public Builder toBuilder() {
return Builder.fromProductOrder(this);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductOrder that = (ProductOrder) o;
if (packageId != that.packageId) return false;
if (quantity != that.quantity) return false;
if (useHourlyPricing != that.useHourlyPricing) return false;
if (location != null ? !location.equals(that.location) : that.location != null)
return false;
if (prices != null ? !prices.equals(that.prices) : that.prices != null)
return false;
if (virtualGuests != null ? !virtualGuests.equals(that.virtualGuests) : that.virtualGuests != null)
return false;
return true;
return this.useHourlyPricing;
}
@Override
public int hashCode() {
int result = (packageId ^ (packageId >>> 32));
result = 31 * result + (location != null ? location.hashCode() : 0);
result = 31 * result + (prices != null ? prices.hashCode() : 0);
result = 31 * result + (virtualGuests != null ? virtualGuests.hashCode() : 0);
result = 31 * result + (quantity ^ (quantity >>> 32));
result = 31 * result + (useHourlyPricing ? 1 : 0);
return result;
return Objects.hashCode(packageId, location, prices, virtualGuests, quantity, useHourlyPricing);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductOrder that = ProductOrder.class.cast(obj);
return Objects.equal(this.packageId, that.packageId)
&& Objects.equal(this.location, that.location)
&& Objects.equal(this.prices, that.prices)
&& Objects.equal(this.virtualGuests, that.virtualGuests)
&& Objects.equal(this.quantity, that.quantity)
&& Objects.equal(this.useHourlyPricing, that.useHourlyPricing);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("packageId", packageId).add("location", location).add("prices", prices).add("virtualGuests", virtualGuests).add("quantity", quantity).add("useHourlyPricing", useHourlyPricing);
}
@Override
public String toString() {
return "[packageId=" + packageId + ", location=" + location + ", prices=" + prices
+ ", virtualGuests=" + virtualGuests +", quantity=" + quantity + ", useHourlyPricing=" + useHourlyPricing + "]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -18,63 +18,86 @@
*/
package org.jclouds.softlayer.domain;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* Class ProductOrderReceipt
*
* @author Jason King
* @see <a href= "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Container_Product_Order_Receipt"
* />
/>
*/
public class ProductOrderReceipt implements Comparable<ProductOrderReceipt> {
public static Builder builder() {
return new Builder();
public class ProductOrderReceipt {
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int orderId = -1;
private ProductOrder orderDetails;
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductOrderReceipt(this);
}
public Builder orderId(int orderId) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int orderId;
protected ProductOrder orderDetails;
/**
* @see ProductOrderReceipt#getOrderId()
*/
public T orderId(int orderId) {
this.orderId = orderId;
return this;
return self();
}
public Builder orderDetails(ProductOrder orderDetails) {
/**
* @see ProductOrderReceipt#getOrderDetails()
*/
public T orderDetails(ProductOrder orderDetails) {
this.orderDetails = orderDetails;
return this;
return self();
}
public ProductOrderReceipt build() {
return new ProductOrderReceipt(orderId,orderDetails);
return new ProductOrderReceipt(orderId, orderDetails);
}
public static Builder fromAddress(ProductOrderReceipt in) {
return ProductOrderReceipt.builder().orderId(in.getOrderId()).orderDetails(in.getOrderDetails());
public T fromProductOrderReceipt(ProductOrderReceipt in) {
return this
.orderId(in.getOrderId())
.orderDetails(in.getOrderDetails());
}
}
private int orderId = -1;
private ProductOrder orderDetails;
// for deserializer
ProductOrderReceipt() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductOrderReceipt(int orderId,ProductOrder orderDetails) {
private final int orderId;
private final ProductOrder orderDetails;
@ConstructorProperties({
"orderId", "orderDetails"
})
protected ProductOrderReceipt(int orderId, @Nullable ProductOrder orderDetails) {
this.orderId = orderId;
this.orderDetails = orderDetails;
}
@Override
public int compareTo(ProductOrderReceipt arg0) {
return Integer.valueOf(orderId).compareTo(arg0.getOrderId());
}
/**
* @return unique identifier for the order.
*/
public int getOrderId() {
return orderId;
return this.orderId;
}
/**
@ -83,40 +106,33 @@ public class ProductOrderReceipt implements Comparable<ProductOrderReceipt> {
* This will only return when an order is processed successfully.
* It will contain all the items in an order as well as the order totals.
*/
@Nullable
public ProductOrder getOrderDetails() {
return orderDetails;
}
public Builder toBuilder() {
return Builder.fromAddress(this);
return this.orderDetails;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (orderId ^ (orderId >>> 32));
return result;
return Objects.hashCode(orderId, orderDetails);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProductOrderReceipt other = (ProductOrderReceipt) obj;
if (orderId != other.orderId)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductOrderReceipt that = ProductOrderReceipt.class.cast(obj);
return Objects.equal(this.orderId, that.orderId)
&& Objects.equal(this.orderDetails, that.orderDetails);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("orderId", orderId).add("orderDetails", orderDetails);
}
@Override
public String toString() {
return "[orderId=" + orderId + ", orderDetails="+orderDetails+"]";
return string().toString();
}
}

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,10 +20,14 @@ package org.jclouds.softlayer.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;
import com.google.common.base.Objects.ToStringHelper;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
/**
* The SoftLayer_Product_Package data type contains information about packages
@ -33,55 +37,83 @@ import com.google.common.collect.Sets;
*
* @author Adrian Cole
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Package"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Product_Package"
/>
*/
public class ProductPackage implements Comparable<ProductPackage> {
public class ProductPackage {
// TODO there are more elements than this.
public static Builder builder() {
return new Builder();
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public static class Builder {
private int id = -1;
private String name;
private String description;
private Set<ProductItem> items = Sets.newLinkedHashSet();
private Set<Datacenter> datacenters = Sets.newLinkedHashSet();
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromProductPackage(this);
}
public Builder id(int id) {
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int id;
protected String name;
protected String description;
protected Set<ProductItem> items = ImmutableSet.of();
protected Set<Datacenter> locations = ImmutableSet.of();
/**
* @see ProductPackage#getId()
*/
public T id(int id) {
this.id = id;
return this;
return self();
}
public Builder name(String name) {
/**
* @see ProductPackage#getName()
*/
public T name(String name) {
this.name = name;
return this;
return self();
}
public Builder description(String description) {
/**
* @see ProductPackage#getDescription()
*/
public T description(String description) {
this.description = description;
return this;
return self();
}
public Builder items(Iterable<ProductItem> items) {
this.items = ImmutableSet.<ProductItem> copyOf(checkNotNull(items, "items"));
return this;
/**
* @see ProductPackage#getItems()
*/
public T items(Set<ProductItem> items) {
this.items = ImmutableSet.copyOf(checkNotNull(items, "items"));
return self();
}
public Builder datacenters(Iterable<Datacenter> datacenters) {
this.datacenters = ImmutableSet.<Datacenter> copyOf(checkNotNull(datacenters, "datacenters"));
return this;
public T items(ProductItem... in) {
return items(ImmutableSet.copyOf(in));
}
/**
* @see ProductPackage#getDatacenters()
*/
public T datacenters(Set<Datacenter> locations) {
this.locations = ImmutableSet.copyOf(checkNotNull(locations, "locations"));
return self();
}
public T datacenters(Datacenter... in) {
return datacenters(ImmutableSet.copyOf(in));
}
public ProductPackage build() {
return new ProductPackage(id, name, description, items, datacenters);
return new ProductPackage(id, name, description, items, locations);
}
public static Builder fromProductPackage(ProductPackage in) {
return ProductPackage.builder().id(in.getId())
public T fromProductPackage(ProductPackage in) {
return this
.id(in.getId())
.name(in.getName())
.description(in.getDescription())
.items(in.getItems())
@ -89,100 +121,90 @@ public class ProductPackage implements Comparable<ProductPackage> {
}
}
private int id = -1;
private String name;
private String description;
private Set<ProductItem> items = Sets.newLinkedHashSet();
private Set<Datacenter> locations = Sets.newLinkedHashSet();
// for deserializer
ProductPackage() {
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
protected ConcreteBuilder self() {
return this;
}
}
public ProductPackage(int id, String name, String description, Iterable<ProductItem> items, Iterable<Datacenter> datacenters) {
private final int id;
private final String name;
private final String description;
private final Set<ProductItem> items;
private final Set<Datacenter> locations;
@ConstructorProperties({
"id", "name", "description", "items", "locations"
})
protected ProductPackage(int id, @Nullable String name, @Nullable String description, @Nullable Set<ProductItem> items, Set<Datacenter> locations) {
this.id = id;
this.name = name;
this.description = description;
this.items = ImmutableSet.<ProductItem> copyOf(checkNotNull(items, "items"));
this.locations = ImmutableSet.<Datacenter> copyOf(checkNotNull(datacenters, "datacenters"));
}
@Override
public int compareTo(ProductPackage arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
this.items = items == null ? ImmutableSet.<ProductItem>of() : ImmutableSet.copyOf(items);
this.locations = locations == null ? ImmutableSet.<Datacenter>of() : ImmutableSet.copyOf(locations);
}
/**
* @return A package's internal identifier. Everything regarding a
* SoftLayer_Product_Package is tied back to this id.
SoftLayer_Product_Package is tied back to this id.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The description of the package. For server packages, this is
* usually a detailed description of processor type and count.
usually a detailed description of processor type and count.
*/
@Nullable
public String getName() {
return name;
return this.name;
}
/**
* @return A generic description of the processor type and count. This
* includes HTML, so you may want to strip these tags if you plan to
* use it.
includes HTML, so you may want to strip these tags if you plan to
use it.
*/
@Nullable
public String getDescription() {
return description;
return this.description;
}
/**
*
* @return A collection of valid items available for purchase in this
* package.
package.
*/
public Set<ProductItem> getItems() {
return items;
return this.items;
}
/**
*
* @return A collection of valid locations for this package.
*/
public Set<Datacenter> getDatacenters() {
return locations;
}
public Builder toBuilder() {
return Builder.fromProductPackage(this);
return this.locations;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id ^ (id >>> 32));
return result;
return Objects.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ProductPackage other = (ProductPackage) obj;
if (id != other.id)
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
ProductPackage that = ProductPackage.class.cast(obj);
return Objects.equal(this.id, that.id);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("id", id).add("name", name).add("description", description).add("items", items).add("locations", locations);
}
@Override
public String toString() {
return "ProductPackage [id=" + id + ", name=" + name + ", description=" + description + ", items=" + items + ", datacenters=" + locations + "]";
return string().toString();
}
}

View File

@ -21,6 +21,12 @@ package org.jclouds.softlayer.domain;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.emptyToNull;
import java.beans.ConstructorProperties;
import org.jclouds.javax.annotation.Nullable;
import com.google.common.base.Objects;
/**
* A region is made up of a keyname and a description of that region.
* A region keyname can be used as part of an order.
@ -50,7 +56,7 @@ public class Region implements Comparable<Region> {
}
public Region build() {
return new Region(keyname, description);
return new Region(0, keyname, description);
}
public static Builder fromAddress(Region in) {
@ -60,18 +66,15 @@ public class Region implements Comparable<Region> {
}
/* An integer representing the order in which this element is displayed */
private int sortOrder = 0;
private String keyname;
private String description;
private final int sortOrder;
private final String keyname;
private final String description;
// for deserializer
Region() {
}
public Region(String keyname, String description) {
this.keyname = checkNotNull(emptyToNull(keyname),"keyname cannot be null or empty:"+keyname);
this.description = checkNotNull(emptyToNull(description),"country cannot be null or empty:"+description);
@ConstructorProperties({"sortOrder", "keyname", "description"})
public Region(int sortOrder, String keyname, String description) {
this.sortOrder = sortOrder;
this.keyname = checkNotNull(emptyToNull(keyname), "keyname cannot be null or empty:" + keyname);
this.description = description;
}
@Override
@ -89,6 +92,7 @@ public class Region implements Comparable<Region> {
/**
* @return A short description of a region's name. This description is seen on the order forms.
*/
@Nullable
public String getDescription() {
return description;
}
@ -103,20 +107,13 @@ public class Region implements Comparable<Region> {
if (o == null || getClass() != o.getClass()) return false;
Region region = (Region) o;
if (sortOrder != region.sortOrder) return false;
if (!description.equals(region.description)) return false;
if (!keyname.equals(region.keyname)) return false;
return true;
return Objects.equal(keyname, region.keyname)
&& Objects.equal(description, region.description);
}
@Override
public int hashCode() {
int result = sortOrder;
result = 31 * result + keyname.hashCode();
result = 31 * result + description.hashCode();
return result;
return Objects.hashCode(keyname, description);
}
@Override

View File

@ -1,4 +1,4 @@
/**
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@ -20,10 +20,14 @@ package org.jclouds.softlayer.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.CaseFormat;
import com.google.gson.annotations.SerializedName;
import com.google.common.base.Objects;
import com.google.common.base.Objects.ToStringHelper;
/**
* The virtual guest data type presents the structure in which all virtual guests will be presented.
@ -45,170 +49,286 @@ import com.google.gson.annotations.SerializedName;
*
* @author Adrian Cole
* @see <a href=
* "http://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest"
* />
"http://sldn.softlayer.com/reference/datatypes/SoftLayer_Virtual_Guest"
/>
*/
public class VirtualGuest implements Comparable<VirtualGuest> {
public static Builder builder() {
return new Builder();
public class VirtualGuest {
/**
* These states come from the powerState field. i.e.
* https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests/{id}?objectMask=powerState
*/
public static enum State {
HALTED,
PAUSED,
RUNNING,
UNRECOGNIZED;
@Override
public String toString() {
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name());
}
public static class Builder {
private int id = -1;
private int accountId = -1;
private Date createDate;
private boolean dedicatedAccountHostOnly;
private String hostname;
private String domain;
private String fullyQualifiedDomainName;
private Date lastVerifiedDate;
private int maxCpu = -1;
private String maxCpuUnits;
private int maxMemory = -1;
private Date metricPollDate;
private Date modifyDate;
private String notes;
private boolean privateNetworkOnly;
private int startCpus = -1;
private int statusId = -1;
private String uuid;
private String primaryBackendIpAddress;
private String primaryIpAddress;
private int billingItemId;
private OperatingSystem operatingSystem;
private Datacenter datacenter;
private PowerState powerState;
public static State fromValue(String state) {
try {
return valueOf(CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(state, "state")));
} catch (IllegalArgumentException e) {
return UNRECOGNIZED;
}
}
}
public Builder id(int id) {
public static class BillingItem {
private final int id;
@ConstructorProperties("id")
public BillingItem(int id) {
this.id = id;
return this;
}
public Builder accountId(int accountId) {
@Override
public String toString() {
return "[id=" + id + "]";
}
}
public static Builder<?> builder() {
return new ConcreteBuilder();
}
public Builder<?> toBuilder() {
return new ConcreteBuilder().fromVirtualGuest(this);
}
public static abstract class Builder<T extends Builder<T>> {
protected abstract T self();
protected int accountId;
protected Date createDate;
protected boolean dedicatedAccountHostOnly;
protected String domain;
protected String fullyQualifiedDomainName;
protected String hostname;
protected int id;
protected Date lastVerifiedDate;
protected int maxCpu;
protected String maxCpuUnits;
protected int maxMemory;
protected Date metricPollDate;
protected Date modifyDate;
protected String notes;
protected boolean privateNetworkOnly;
protected int startCpus;
protected int statusId;
protected String uuid;
protected String primaryBackendIpAddress;
protected String primaryIpAddress;
protected int billingItemId;
protected OperatingSystem operatingSystem;
protected Datacenter datacenter;
protected PowerState powerState;
/**
* @see VirtualGuest#getAccountId()
*/
public T accountId(int accountId) {
this.accountId = accountId;
return this;
return self();
}
public Builder createDate(Date createDate) {
/**
* @see VirtualGuest#getCreateDate()
*/
public T createDate(Date createDate) {
this.createDate = createDate;
return this;
return self();
}
public Builder dedicatedAccountHostOnly(boolean dedicatedAccountHostOnly) {
/**
* @see VirtualGuest#isDedicatedAccountHostOnly()
*/
public T dedicatedAccountHostOnly(boolean dedicatedAccountHostOnly) {
this.dedicatedAccountHostOnly = dedicatedAccountHostOnly;
return this;
return self();
}
public Builder hostname(String hostname) {
this.hostname = hostname;
return this;
}
public Builder domain(String domain) {
/**
* @see VirtualGuest#getDomain()
*/
public T domain(String domain) {
this.domain = domain;
return this;
return self();
}
public Builder fullyQualifiedDomainName(String fullyQualifiedDomainName) {
/**
* @see VirtualGuest#getFullyQualifiedDomainName()
*/
public T fullyQualifiedDomainName(String fullyQualifiedDomainName) {
this.fullyQualifiedDomainName = fullyQualifiedDomainName;
return this;
return self();
}
public Builder lastVerifiedDate(Date lastVerifiedDate) {
/**
* @see VirtualGuest#getHostname()
*/
public T hostname(String hostname) {
this.hostname = hostname;
return self();
}
/**
* @see VirtualGuest#getId()
*/
public T id(int id) {
this.id = id;
return self();
}
/**
* @see VirtualGuest#getLastVerifiedDate()
*/
public T lastVerifiedDate(Date lastVerifiedDate) {
this.lastVerifiedDate = lastVerifiedDate;
return this;
return self();
}
public Builder maxCpu(int maxCpu) {
/**
* @see VirtualGuest#getMaxCpu()
*/
public T maxCpu(int maxCpu) {
this.maxCpu = maxCpu;
return this;
return self();
}
public Builder maxCpuUnits(String maxCpuUnits) {
/**
* @see VirtualGuest#getMaxCpuUnits()
*/
public T maxCpuUnits(String maxCpuUnits) {
this.maxCpuUnits = maxCpuUnits;
return this;
return self();
}
public Builder maxMemory(int maxMemory) {
/**
* @see VirtualGuest#getMaxMemory()
*/
public T maxMemory(int maxMemory) {
this.maxMemory = maxMemory;
return this;
return self();
}
public Builder metricPollDate(Date metricPollDate) {
/**
* @see VirtualGuest#getMetricPollDate()
*/
public T metricPollDate(Date metricPollDate) {
this.metricPollDate = metricPollDate;
return this;
return self();
}
public Builder modifyDate(Date modifyDate) {
/**
* @see VirtualGuest#getModifyDate()
*/
public T modifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
return this;
return self();
}
public Builder notes(String notes) {
/**
* @see VirtualGuest#getNotes()
*/
public T notes(String notes) {
this.notes = notes;
return this;
return self();
}
public Builder privateNetworkOnly(boolean privateNetworkOnly) {
/**
* @see VirtualGuest#isPrivateNetworkOnly()
*/
public T privateNetworkOnly(boolean privateNetworkOnly) {
this.privateNetworkOnly = privateNetworkOnly;
return this;
return self();
}
public Builder startCpus(int startCpus) {
/**
* @see VirtualGuest#getStartCpus()
*/
public T startCpus(int startCpus) {
this.startCpus = startCpus;
return this;
return self();
}
public Builder statusId(int statusId) {
/**
* @see VirtualGuest#getStatusId()
*/
public T statusId(int statusId) {
this.statusId = statusId;
return this;
return self();
}
public Builder uuid(String uuid) {
/**
* @see VirtualGuest#getUuid()
*/
public T uuid(String uuid) {
this.uuid = uuid;
return this;
return self();
}
public Builder primaryBackendIpAddress(String primaryBackendIpAddress) {
/**
* @see VirtualGuest#getPrimaryBackendIpAddress()
*/
public T primaryBackendIpAddress(String primaryBackendIpAddress) {
this.primaryBackendIpAddress = primaryBackendIpAddress;
return this;
return self();
}
public Builder primaryIpAddress(String primaryIpAddress) {
/**
* @see VirtualGuest#getPrimaryIpAddress()
*/
public T primaryIpAddress(String primaryIpAddress) {
this.primaryIpAddress = primaryIpAddress;
return this;
return self();
}
public Builder billingItemId(int billingItemId) {
/**
* @see VirtualGuest#getBillingItemId()
*/
public T billingItemId(int billingItemId) {
this.billingItemId = billingItemId;
return this;
return self();
}
public Builder operatingSystem(OperatingSystem operatingSystem) {
/**
* @see VirtualGuest#getOperatingSystem()
*/
public T operatingSystem(OperatingSystem operatingSystem) {
this.operatingSystem = operatingSystem;
return this;
return self();
}
public Builder datacenter(Datacenter datacenter) {
/**
* @see VirtualGuest#getDatacenter()
*/
public T datacenter(Datacenter datacenter) {
this.datacenter = datacenter;
return this;
return self();
}
public Builder powerState(PowerState powerState) {
/**
* @see VirtualGuest#getPowerState()
*/
public T powerState(PowerState powerState) {
this.powerState = powerState;
return this;
return self();
}
public VirtualGuest build() {
return new VirtualGuest(accountId, createDate, dedicatedAccountHostOnly, domain,
fullyQualifiedDomainName, hostname, id, lastVerifiedDate, maxCpu,
maxCpuUnits, maxMemory, metricPollDate, modifyDate, notes,
privateNetworkOnly, startCpus, statusId, uuid, primaryBackendIpAddress,
primaryIpAddress, billingItemId,operatingSystem,datacenter,powerState);
return new VirtualGuest(accountId, createDate, dedicatedAccountHostOnly, domain, fullyQualifiedDomainName, hostname,
id, lastVerifiedDate, maxCpu, maxCpuUnits, maxMemory, metricPollDate, modifyDate, notes, privateNetworkOnly,
startCpus, statusId, uuid, primaryBackendIpAddress, primaryIpAddress, new BillingItem(billingItemId),
operatingSystem, datacenter, powerState);
}
public static Builder fromVirtualGuest(VirtualGuest in) {
return VirtualGuest.builder()
public T fromVirtualGuest(VirtualGuest in) {
return this
.accountId(in.getAccountId())
.createDate(in.getCreateDate())
.dedicatedAccountHostOnly(in.isDedicatedAccountHostOnly())
@ -236,68 +356,47 @@ public class VirtualGuest implements Comparable<VirtualGuest> {
}
}
/**
* These states come from the powerState field. i.e.
* https://api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests/{id}?objectMask=powerState
*/
public static enum State {
HALTED,
PAUSED,
RUNNING,
UNRECOGNIZED;
private static class ConcreteBuilder extends Builder<ConcreteBuilder> {
@Override
public String toString() {
return CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, name());
}
public static State fromValue(String state) {
try {
return valueOf(CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(state, "state")));
} catch (IllegalArgumentException e) {
return UNRECOGNIZED;
}
protected ConcreteBuilder self() {
return this;
}
}
private int accountId = -1;
private Date createDate;
@SerializedName("dedicatedAccountHostOnlyFlag")
private boolean dedicatedAccountHostOnly;
private String domain;
private String fullyQualifiedDomainName;
private String hostname;
private int id = -1;
private Date lastVerifiedDate;
private int maxCpu = -1;
private String maxCpuUnits;
private int maxMemory = -1;
private Date metricPollDate;
private Date modifyDate;
private String notes;
@SerializedName("privateNetworkOnlyFlag")
private boolean privateNetworkOnly;
private int startCpus = -1;
private int statusId = -1;
private String uuid;
private String primaryBackendIpAddress;
private String primaryIpAddress;
private final int accountId;
private final Date createDate;
private final boolean dedicatedAccountHostOnly;
private final String domain;
private final String fullyQualifiedDomainName;
private final String hostname;
private final int id;
private final Date lastVerifiedDate;
private final int maxCpu;
private final String maxCpuUnits;
private final int maxMemory;
private final Date metricPollDate;
private final Date modifyDate;
private final String notes;
private final boolean privateNetworkOnly;
private final int startCpus;
private final int statusId;
private final String uuid;
private final String primaryBackendIpAddress;
private final String primaryIpAddress;
private final int billingItemId;
private final OperatingSystem operatingSystem;
private final Datacenter datacenter;
private final PowerState powerState;
private int billingItemId = -1;
private OperatingSystem operatingSystem;
private Datacenter datacenter;
private PowerState powerState;
// for deserializer
VirtualGuest() {
}
public VirtualGuest(int accountId, Date createDate, boolean dedicatedAccountHostOnly, String domain,
String fullyQualifiedDomainName, String hostname, int id, Date lastVerifiedDate, int maxCpu,
String maxCpuUnits, int maxMemory, Date metricPollDate, Date modifyDate, String notes,
boolean privateNetworkOnly, int startCpus, int statusId, String uuid, String primaryBackendIpAddress,
String primaryIpAddress,int billingItemId, OperatingSystem operatingSystem, Datacenter datacenter, PowerState powerState) {
@ConstructorProperties({
"accountId", "createDate", "dedicatedAccountHostOnlyFlag", "domain", "fullyQualifiedDomainName", "hostname", "id", "lastVerifiedDate", "maxCpu", "maxCpuUnits", "maxMemory", "metricPollDate", "modifyDate", "notes", "privateNetworkOnlyFlag", "startCpus", "statusId", "uuid", "primaryBackendIpAddress", "primaryIpAddress", "billingItem", "operatingSystem", "datacenter", "powerState"
})
protected VirtualGuest(int accountId, @Nullable Date createDate, boolean dedicatedAccountHostOnly, @Nullable String domain,
@Nullable String fullyQualifiedDomainName, @Nullable String hostname, int id, @Nullable Date lastVerifiedDate,
int maxCpu, @Nullable String maxCpuUnits, int maxMemory, @Nullable Date metricPollDate, @Nullable Date modifyDate,
@Nullable String notes, boolean privateNetworkOnly, int startCpus, int statusId, @Nullable String uuid,
@Nullable String primaryBackendIpAddress, @Nullable String primaryIpAddress, @Nullable BillingItem billingItem,
@Nullable OperatingSystem operatingSystem, @Nullable Datacenter datacenter, @Nullable PowerState powerState) {
this.accountId = accountId;
this.createDate = createDate;
this.dedicatedAccountHostOnly = dedicatedAccountHostOnly;
@ -318,336 +417,241 @@ public class VirtualGuest implements Comparable<VirtualGuest> {
this.uuid = uuid;
this.primaryBackendIpAddress = primaryBackendIpAddress;
this.primaryIpAddress = primaryIpAddress;
this.billingItemId = billingItemId;
this.billingItemId = billingItem == null ? -1 : billingItem.id;
this.operatingSystem = operatingSystem;
this.datacenter = datacenter;
this.powerState = powerState;
}
@Override
public int compareTo(VirtualGuest arg0) {
return Integer.valueOf(id).compareTo(arg0.getId());
}
/**
* @return A computing instance's associated account id
*/
public int getAccountId() {
return accountId;
return this.accountId;
}
/**
* @return The date a virtual computing instance was created.
*/
@Nullable
public Date getCreateDate() {
return createDate;
return this.createDate;
}
/**
* @return When true this flag specifies that a compute instance is to run on hosts that only
* have guests from the same account.
have guests from the same account.
*/
public boolean isDedicatedAccountHostOnly() {
return dedicatedAccountHostOnly;
return this.dedicatedAccountHostOnly;
}
/**
* @return A computing instance's domain name
*/
@Nullable
public String getDomain() {
return domain;
return this.domain;
}
/**
* @return A name reflecting the hostname and domain of the computing instance.
*/
@Nullable
public String getFullyQualifiedDomainName() {
return fullyQualifiedDomainName;
return this.fullyQualifiedDomainName;
}
/**
* @return A virtual computing instance's hostname
*/
@Nullable
public String getHostname() {
return hostname;
return this.hostname;
}
/**
* @return Unique ID for a computing instance.
*/
public int getId() {
return id;
return this.id;
}
/**
* @return The last timestamp of when the guest was verified as a resident virtual machine on the
* host's hypervisor platform.
host's hypervisor platform.
*/
@Nullable
public Date getLastVerifiedDate() {
return lastVerifiedDate;
return this.lastVerifiedDate;
}
/**
* @return The maximum amount of CPU resources a computing instance may utilize.
*/
public int getMaxCpu() {
return maxCpu;
return this.maxCpu;
}
/**
* @return The unit of the maximum amount of CPU resources a computing instance may utilize.
*/
@Nullable
public String getMaxCpuUnits() {
return maxCpuUnits;
return this.maxCpuUnits;
}
/**
* @return The maximum amount of memory a computing instance may utilize.
*/
public int getMaxMemory() {
return maxMemory;
return this.maxMemory;
}
/**
* @return The date of the most recent metric tracking poll performed.
*/
@Nullable
public Date getMetricPollDate() {
return metricPollDate;
return this.metricPollDate;
}
/**
* @return The date a virtual computing instance was last modified.
*/
@Nullable
public Date getModifyDate() {
return modifyDate;
return this.modifyDate;
}
/**
* @return A small note about a cloud instance to use at your discretion.
*/
@Nullable
public String getNotes() {
return notes;
return this.notes;
}
/**
* @return Whether the computing instance only has access to the private network.
*/
public boolean isPrivateNetworkOnly() {
return privateNetworkOnly;
return this.privateNetworkOnly;
}
/**
* @return The number of CPUs available to a computing instance upon startup.
*/
public int getStartCpus() {
return startCpus;
return this.startCpus;
}
/**
* @return A computing instances status ID
*/
public int getStatusId() {
return statusId;
return this.statusId;
}
/**
* @return Unique ID for a computing instance's record on a virtualization platform.
*/
@Nullable
public String getUuid() {
return uuid;
return this.uuid;
}
/**
* @return private ip address
*/
@Nullable
public String getPrimaryBackendIpAddress() {
return primaryBackendIpAddress;
return this.primaryBackendIpAddress;
}
/**
* @return public ip address
*/
@Nullable
public String getPrimaryIpAddress() {
return primaryIpAddress;
return this.primaryIpAddress;
}
/**
* @return The billing item for a CloudLayer Compute Instance.
*/
public int getBillingItemId() {
return billingItemId;
return this.billingItemId;
}
/**
* @return A guest's operating system.
*/
@Nullable
public OperatingSystem getOperatingSystem() {
return operatingSystem;
return this.operatingSystem;
}
/**
* @return The guest's datacenter
*/
@Nullable
public Datacenter getDatacenter() {
return datacenter;
return this.datacenter;
}
/**
* @return The current power state of a virtual guest.
*/
@Nullable
public PowerState getPowerState() {
return powerState;
return this.powerState;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (accountId ^ (accountId >>> 32));
result = prime * result + ((createDate == null) ? 0 : createDate.hashCode());
result = prime * result + (dedicatedAccountHostOnly ? 1231 : 1237);
result = prime * result + ((domain == null) ? 0 : domain.hashCode());
result = prime * result + ((fullyQualifiedDomainName == null) ? 0 : fullyQualifiedDomainName.hashCode());
result = prime * result + ((hostname == null) ? 0 : hostname.hashCode());
result = prime * result + (id ^ (id >>> 32));
result = prime * result + ((lastVerifiedDate == null) ? 0 : lastVerifiedDate.hashCode());
result = prime * result + maxCpu;
result = prime * result + ((maxCpuUnits == null) ? 0 : maxCpuUnits.hashCode());
result = prime * result + maxMemory;
result = prime * result + ((metricPollDate == null) ? 0 : metricPollDate.hashCode());
result = prime * result + ((modifyDate == null) ? 0 : modifyDate.hashCode());
result = prime * result + ((notes == null) ? 0 : notes.hashCode());
result = prime * result + ((primaryBackendIpAddress == null) ? 0 : primaryBackendIpAddress.hashCode());
result = prime * result + ((primaryIpAddress == null) ? 0 : primaryIpAddress.hashCode());
result = prime * result + (privateNetworkOnly ? 1231 : 1237);
result = prime * result + startCpus;
result = prime * result + statusId;
result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
result = prime * result + (getBillingItemId() ^ (getBillingItemId() >>> 32));
result = prime * result + ((operatingSystem == null) ? 0 : operatingSystem.hashCode());
result = prime * result + ((datacenter == null) ? 0 : datacenter.hashCode());
result = prime * result + ((powerState == null) ? 0 : powerState.hashCode());
return result;
return Objects.hashCode(accountId, createDate, dedicatedAccountHostOnly, domain, fullyQualifiedDomainName, hostname, id, lastVerifiedDate, maxCpu, maxCpuUnits, maxMemory, metricPollDate, modifyDate, notes, privateNetworkOnly, startCpus, statusId, uuid, primaryBackendIpAddress, primaryIpAddress, billingItemId, operatingSystem, datacenter, powerState);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
VirtualGuest other = (VirtualGuest) obj;
if (accountId != other.accountId)
return false;
if (createDate == null) {
if (other.createDate != null)
return false;
} else if (!createDate.equals(other.createDate))
return false;
if (dedicatedAccountHostOnly != other.dedicatedAccountHostOnly)
return false;
if (domain == null) {
if (other.domain != null)
return false;
} else if (!domain.equals(other.domain))
return false;
if (fullyQualifiedDomainName == null) {
if (other.fullyQualifiedDomainName != null)
return false;
} else if (!fullyQualifiedDomainName.equals(other.fullyQualifiedDomainName))
return false;
if (hostname == null) {
if (other.hostname != null)
return false;
} else if (!hostname.equals(other.hostname))
return false;
if (id != other.id)
return false;
if (lastVerifiedDate == null) {
if (other.lastVerifiedDate != null)
return false;
} else if (!lastVerifiedDate.equals(other.lastVerifiedDate))
return false;
if (maxCpu != other.maxCpu)
return false;
if (maxCpuUnits == null) {
if (other.maxCpuUnits != null)
return false;
} else if (!maxCpuUnits.equals(other.maxCpuUnits))
return false;
if (maxMemory != other.maxMemory)
return false;
if (metricPollDate == null) {
if (other.metricPollDate != null)
return false;
} else if (!metricPollDate.equals(other.metricPollDate))
return false;
if (modifyDate == null) {
if (other.modifyDate != null)
return false;
} else if (!modifyDate.equals(other.modifyDate))
return false;
if (notes == null) {
if (other.notes != null)
return false;
} else if (!notes.equals(other.notes))
return false;
if (primaryBackendIpAddress == null) {
if (other.primaryBackendIpAddress != null)
return false;
} else if (!primaryBackendIpAddress.equals(other.primaryBackendIpAddress))
return false;
if (primaryIpAddress == null) {
if (other.primaryIpAddress != null)
return false;
} else if (!primaryIpAddress.equals(other.primaryIpAddress))
return false;
if (privateNetworkOnly != other.privateNetworkOnly)
return false;
if (startCpus != other.startCpus)
return false;
if (statusId != other.statusId)
return false;
if (uuid == null) {
if (other.uuid != null)
return false;
} else if (!uuid.equals(other.uuid))
return false;
if (getBillingItemId() != other.getBillingItemId())
return false;
if (operatingSystem == null) {
if (other.operatingSystem != null)
return false;
} else if (!operatingSystem.equals(other.operatingSystem))
return false;
if (datacenter == null) {
if (other.datacenter != null)
return false;
} else if (!datacenter.equals(other.datacenter))
return false;
if (powerState == null) {
if (other.powerState != null)
return false;
} else if (!powerState.equals(other.powerState))
return false;
return true;
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
VirtualGuest that = VirtualGuest.class.cast(obj);
return Objects.equal(this.accountId, that.accountId)
&& Objects.equal(this.createDate, that.createDate)
&& Objects.equal(this.dedicatedAccountHostOnly, that.dedicatedAccountHostOnly)
&& Objects.equal(this.domain, that.domain)
&& Objects.equal(this.fullyQualifiedDomainName, that.fullyQualifiedDomainName)
&& Objects.equal(this.hostname, that.hostname)
&& Objects.equal(this.id, that.id)
&& Objects.equal(this.lastVerifiedDate, that.lastVerifiedDate)
&& Objects.equal(this.maxCpu, that.maxCpu)
&& Objects.equal(this.maxCpuUnits, that.maxCpuUnits)
&& Objects.equal(this.maxMemory, that.maxMemory)
&& Objects.equal(this.metricPollDate, that.metricPollDate)
&& Objects.equal(this.modifyDate, that.modifyDate)
&& Objects.equal(this.notes, that.notes)
&& Objects.equal(this.privateNetworkOnly, that.privateNetworkOnly)
&& Objects.equal(this.startCpus, that.startCpus)
&& Objects.equal(this.statusId, that.statusId)
&& Objects.equal(this.uuid, that.uuid)
&& Objects.equal(this.primaryBackendIpAddress, that.primaryBackendIpAddress)
&& Objects.equal(this.primaryIpAddress, that.primaryIpAddress)
&& Objects.equal(this.billingItemId, that.billingItemId)
&& Objects.equal(this.operatingSystem, that.operatingSystem)
&& Objects.equal(this.datacenter, that.datacenter)
&& Objects.equal(this.powerState, that.powerState);
}
protected ToStringHelper string() {
return Objects.toStringHelper(this)
.add("accountId", accountId).add("createDate", createDate).add("dedicatedAccountHostOnly", dedicatedAccountHostOnly).add("domain", domain).add("fullyQualifiedDomainName", fullyQualifiedDomainName).add("hostname", hostname).add("id", id).add("lastVerifiedDate", lastVerifiedDate).add("maxCpu", maxCpu).add("maxCpuUnits", maxCpuUnits).add("maxMemory", maxMemory).add("metricPollDate", metricPollDate).add("modifyDate", modifyDate).add("notes", notes).add("privateNetworkOnly", privateNetworkOnly).add("startCpus", startCpus).add("statusId", statusId).add("uuid", uuid).add("primaryBackendIpAddress", primaryBackendIpAddress).add("primaryIpAddress", primaryIpAddress).add("billingItemId", billingItemId).add("operatingSystem", operatingSystem).add("datacenter", datacenter).add("powerState", powerState);
}
@Override
public String toString() {
return "[accountId=" + accountId + ", createDate=" + createDate + ", dedicatedAccountHostOnly="
+ dedicatedAccountHostOnly + ", domain=" + domain + ", fullyQualifiedDomainName="
+ fullyQualifiedDomainName + ", hostname=" + hostname + ", id=" + id + ", lastVerifiedDate="
+ lastVerifiedDate + ", maxCpu=" + maxCpu + ", maxCpuUnits=" + maxCpuUnits + ", maxMemory=" + maxMemory
+ ", metricPollDate=" + metricPollDate + ", modifyDate=" + modifyDate + ", notes=" + notes
+ ", primaryBackendIpAddress=" + primaryBackendIpAddress + ", primaryIpAddress=" + primaryIpAddress
+ ", privateNetworkOnly=" + privateNetworkOnly + ", startCpus=" + startCpus + ", statusId=" + statusId
+ ", uuid=" + uuid + ", billingItemId="+getBillingItemId()+", operatingSystem="+operatingSystem+", datacenter="+datacenter
+ ", powerState="+powerState+"]";
return string().toString();
}
}

View File

@ -82,7 +82,7 @@ public class ProductOrderToJsonTest {
.quantity(99)
.useHourlyPricing(true)
.prices(ImmutableSet.of(price1,price2))
.virtualGuest(guest)
.virtualGuests(guest)
.build();
String expected = String.format(FORMAT.replaceAll("'","\""),

View File

@ -107,7 +107,7 @@ public class ProductItemToImageTest {
{
ProductItem item = ProductItem.builder()
.description(description)
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
Image i = new ProductItemToImage().apply(item);
OperatingSystem os = i.getOperatingSystem();
@ -122,7 +122,7 @@ public class ProductItemToImageTest {
public void testUbuntu() {
ProductItem item = ProductItem.builder()
.description("Ubuntu Linux 10.04 LTS Lucid Lynx - Minimal Install (64 bit)")
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
Image i = new ProductItemToImage().apply(item);
OperatingSystem os = i.getOperatingSystem();
@ -136,7 +136,7 @@ public class ProductItemToImageTest {
public void testUbuntuNoBitCount() {
ProductItem item = ProductItem.builder()
.description("Ubuntu Linux 10.04 LTS Lucid Lynx - Minimal Install")
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
Image i = new ProductItemToImage().apply(item);
OperatingSystem os = i.getOperatingSystem();
@ -151,7 +151,7 @@ public class ProductItemToImageTest {
public void testCompletelyUnknown() {
ProductItem item = ProductItem.builder()
.description("This fails to match anything!!!")
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
Image i = new ProductItemToImage().apply(item);
OperatingSystem os = i.getOperatingSystem();
@ -165,7 +165,7 @@ public class ProductItemToImageTest {
public void test64BitUnknown() {
ProductItem item = ProductItem.builder()
.description("This only has the bit-count (64 bit)")
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
Image i = new ProductItemToImage().apply(item);
OperatingSystem os = i.getOperatingSystem();
@ -183,7 +183,7 @@ public class ProductItemToImageTest {
@Test(expectedExceptions = NullPointerException.class)
public void testNoDescription() {
ProductItem item = ProductItem.builder()
.price(ProductItemPrice.builder().id(1234).build())
.prices(ProductItemPrice.builder().id(1234).build())
.build();
new ProductItemToImage().apply(item);
}
@ -191,7 +191,7 @@ public class ProductItemToImageTest {
@Test
public void testId() {
ProductItemPrice price = ProductItemPrice.builder().id(1234).build();
ProductItem item = ProductItem.builder().price(price).build();
ProductItem item = ProductItem.builder().prices(price).build();
assertEquals("1234",imageId().apply(item));
}

View File

@ -57,7 +57,7 @@ public class ProductItemsTest {
item = ProductItem.builder().id(1)
.capacity(2.0f)
.description("an item")
.price(price)
.prices(price)
.build();
}
@ -104,7 +104,7 @@ public class ProductItemsTest {
@Test
public void testItemCallGetsCategory() {
ProductItemPrice price = ProductItemPrice.builder().id(1)
.category(category)
.categories(category)
.item(item)
.build();
ProductItem newItem = item().apply(price);
@ -114,8 +114,7 @@ public class ProductItemsTest {
@Test
public void testItemCallNoCategoryOnPrice() {
ProductItem item1 = ProductItem.Builder.fromProductItem(item)
.categories(ImmutableSet.of(category)).build();
ProductItem item1 = item.toBuilder().categories(ImmutableSet.of(category)).build();
ProductItemPrice price = ProductItemPrice.builder().id(1)
.item(item1)
@ -132,11 +131,10 @@ public class ProductItemsTest {
.categoryCode("new category")
.build();
ProductItem item1 = ProductItem.Builder.fromProductItem(item)
.categories(ImmutableSet.of(category2)).build();
ProductItem item1 = item.toBuilder().categories(ImmutableSet.of(category2)).build();
ProductItemPrice price = ProductItemPrice.builder().id(1)
.category(category)
.categories(category)
.item(item1)
.build();
ProductItem newItem = item().apply(price);

View File

@ -67,16 +67,16 @@ public class ProductItemsToHardwareTest {
.id(1)
.description("2 x 2.0 GHz Cores")
.capacity(2F)
.category(ProductItemCategory.builder().categoryCode("guest_core").build())
.price(ProductItemPrice.builder().id(123).build())
.categories(ProductItemCategory.builder().categoryCode("guest_core").build())
.prices(ProductItemPrice.builder().id(123).build())
.build();
ramItem = ProductItem.builder().id(2).description("2GB ram").capacity(2F).category(
ProductItemCategory.builder().categoryCode("ram").build()).price(
ramItem = ProductItem.builder().id(2).description("2GB ram").capacity(2F).categories(
ProductItemCategory.builder().categoryCode("ram").build()).prices(
ProductItemPrice.builder().id(456).build()).build();
volumeItem = ProductItem.builder().id(3).description("100 GB (SAN)").capacity(100F).price(
ProductItemPrice.builder().id(789).build()).category(
volumeItem = ProductItem.builder().id(3).description("100 GB (SAN)").capacity(100F).prices(
ProductItemPrice.builder().id(789).build()).categories(
ProductItemCategory.builder().categoryCode("guest_disk0").build()).build();
@ -84,9 +84,9 @@ public class ProductItemsToHardwareTest {
@Test
public void testHardwareId() {
ProductItem item1 = ProductItem.builder().price(ProductItemPrice.builder().id(123).build()).build();
ProductItem item2 = ProductItem.builder().price(ProductItemPrice.builder().id(456).build()).build();
ProductItem item3 = ProductItem.builder().price(ProductItemPrice.builder().id(789).build()).build();
ProductItem item1 = ProductItem.builder().prices(ProductItemPrice.builder().id(123).build()).build();
ProductItem item2 = ProductItem.builder().prices(ProductItemPrice.builder().id(456).build()).build();
ProductItem item3 = ProductItem.builder().prices(ProductItemPrice.builder().id(789).build()).build();
String id = hardwareId().apply(ImmutableList.of(item1, item2, item3));
assertEquals("123,456,789", id);
@ -138,8 +138,8 @@ public class ProductItemsToHardwareTest {
@Test
public void testHardwareWithTwoDisks() {
ProductItem localVolumeItem = ProductItem.builder().id(4).description("25 GB").capacity(25F).price(
ProductItemPrice.builder().id(987).build()).category(
ProductItem localVolumeItem = ProductItem.builder().id(4).description("25 GB").capacity(25F).prices(
ProductItemPrice.builder().id(987).build()).categories(
ProductItemCategory.builder().categoryCode("guest_disk1").build()).build();
Hardware hardware = toHardware.apply(ImmutableSet.of(cpuItem, ramItem, volumeItem,localVolumeItem));

View File

@ -178,7 +178,7 @@ public class ProductPackageClientLiveTest extends BaseSoftLayerClientLiveTest {
for (ProductItemPrice price : item.getPrices()) {
// ProductItemPrice newDetails =
// client.getProductItemPrice(price.getId());
// client.getProductItemPrice(prices.getId());
// assertEquals(item.getId(), newDetails.getId());
checkPrice(price);
}

View File

@ -126,7 +126,7 @@ public class VirtualGuestClientLiveTest extends BaseSoftLayerClientLiveTest {
TEST_HOSTNAME_PREFIX + new Random().nextInt()).build();
ProductOrder order = ProductOrder.builder().packageId(pkgId).quantity(1).useHourlyPricing(true).prices(
prices.build()).virtualGuest(guest).build();
prices.build()).virtualGuests(guest).build();
ProductOrderReceipt receipt = socontext.getApi().getVirtualGuestClient().orderVirtualGuest(order);
ProductOrder order2 = receipt.getOrderDetails();

View File

@ -61,7 +61,7 @@ public class ParseVirtualGuestHaltedTest extends BaseItemParserTest<VirtualGuest
.primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001)
.uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8")
.operatingSystem(OperatingSystem.builder().id(913824)
.password(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.build())
.datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build())
//TODO: maybe powerState can be flattened like billingItemId

View File

@ -61,7 +61,7 @@ public class ParseVirtualGuestPausedTest extends BaseItemParserTest<VirtualGuest
.primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001)
.uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8")
.operatingSystem(OperatingSystem.builder().id(913824)
.password(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.build())
.datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build())
//TODO: maybe powerState can be flattened like billingItemId

View File

@ -61,7 +61,7 @@ public class ParseVirtualGuestRunningTest extends BaseItemParserTest<VirtualGues
.primaryBackendIpAddress("10.37.102.195").primaryIpAddress("173.192.29.187").startCpus(1).statusId(1001)
.uuid("02ddbbba-9225-3d54-6de5-fc603b309dd8")
.operatingSystem(OperatingSystem.builder().id(913824)
.password(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.passwords(Password.builder().id(729122).username("root").password("KnJqhC2l").build())
.build())
.datacenter(Datacenter.builder().id(3).name("dal01").longName("Dallas").build())
//TODO: maybe powerState can be flattened like billingItemId