From d1b0da081d3182306db9d48584882d0fb9ecc805 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Mon, 5 Mar 2012 21:31:51 +0000 Subject: [PATCH 01/13] VCloud Director 1.5: making sure collections in domain objects are immutable --- .../v1_5/domain/AvailableNetworks.java | 6 +- .../v1_5/domain/CaptureVAppParams.java | 25 ++------- .../director/v1_5/domain/CatalogItem.java | 3 +- .../director/v1_5/domain/CatalogItems.java | 5 +- .../director/v1_5/domain/CatalogsList.java | 15 ++--- .../v1_5/domain/ComposeVAppParams.java | 48 ++++++---------- .../v1_5/domain/CustomizationSection.java | 3 +- .../director/v1_5/domain/FilesList.java | 3 +- .../domain/GuestCustomizationSection.java | 6 +- .../v1_5/domain/InstantiationParams.java | 19 +------ .../director/v1_5/domain/IpAddresses.java | 5 +- .../vcloud/director/v1_5/domain/IpRanges.java | 4 +- .../v1_5/domain/LeaseSettingsSection.java | 49 +++++----------- .../vcloud/director/v1_5/domain/Metadata.java | 6 +- .../v1_5/domain/NetworkConfigSection.java | 14 ++--- .../v1_5/domain/NetworkConfiguration.java | 17 +++--- .../v1_5/domain/NetworkConnectionSection.java | 15 ++--- .../director/v1_5/domain/NetworkFeatures.java | 20 ++++--- .../vcloud/director/v1_5/domain/OrgList.java | 3 +- .../v1_5/domain/ProductSectionList.java | 26 ++++----- .../director/v1_5/domain/RelocateParams.java | 56 ++++++++++++++++++- .../v1_5/domain/ResourceEntities.java | 5 +- .../director/v1_5/domain/ResourceType.java | 6 +- .../vcloud/director/v1_5/domain/Session.java | 3 +- .../domain/SourcedCompositionItemParam.java | 23 ++------ .../domain/SupportedHardwareVersions.java | 3 +- .../director/v1_5/domain/TasksInProgress.java | 9 +-- .../director/v1_5/domain/TasksList.java | 3 +- .../v1_5/domain/VAppNetworkConfiguration.java | 38 ++++++------- .../cim/ResourceAllocationSettingData.java | 14 ++--- 30 files changed, 218 insertions(+), 234 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java index 4f1bef9acd..8e794289f4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/AvailableNetworks.java @@ -23,11 +23,13 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -98,7 +100,7 @@ public class AvailableNetworks { protected Set networks = Sets.newLinkedHashSet(); private AvailableNetworks(Set networks) { - this.networks = networks; + this.networks = ImmutableSet.copyOf(networks); } private AvailableNetworks() { @@ -109,7 +111,7 @@ public class AvailableNetworks { * Gets the value of the network property. */ public Set getNetworks() { - return this.networks; + return Collections.unmodifiableSet(this.networks); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java index daeb321453..0383672f43 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java @@ -22,6 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElement; @@ -101,12 +102,10 @@ public class CaptureVAppParams return this; } - public CaptureVAppParams build() { return new CaptureVAppParams(description, name, source, sections); } - @Override public Builder fromParamsType(ParamsType in) { return Builder.class.cast(super.fromParamsType(in)); @@ -133,7 +132,6 @@ public class CaptureVAppParams this.sections = ImmutableSet.copyOf(sections); } - @XmlElement(name = "Source", required = true) protected Reference source; @XmlElementRef @@ -151,22 +149,9 @@ public class CaptureVAppParams /** * An ovf:Section to configure the captured vAppTemplate. - * Gets the value of the section property. - *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the section property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getSection().add(newItem);
-    * 
- *

- *

- *

+ * + * Gets the value of the section property. + * * Objects of the following type(s) are allowed in the list * {@link JAXBElement }{@code <}{@link Section> }{@code >} * {@link JAXBElement }{@code <}{@link VirtualHardwareSection > }{@code >} @@ -188,7 +173,7 @@ public class CaptureVAppParams * {@link JAXBElement }{@code <}{@link InstallSection> }{@code >} */ public Set> getSections() { - return this.sections; + return Collections.unmodifiableSet(this.sections); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java index 7720193d3b..db8be1d67a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java @@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlRootElement; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; /** @@ -173,7 +174,7 @@ public class CatalogItem extends EntityType { private CatalogItem(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Reference entity, Set properties) { super(href, type, links, description, tasksInProgress, id, name); this.entity = entity; - this.properties = properties; + this.properties = ImmutableSet.copyOf(properties); } private CatalogItem() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItems.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItems.java index 15b42492b3..6e0a09cff1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItems.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItems.java @@ -32,6 +32,7 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; 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; /** @@ -86,11 +87,11 @@ public class CatalogItems { } private CatalogItems() { - // For JAXB and builder use + // For JAXB } private CatalogItems(Set catalogItems) { - this.catalogItems = catalogItems; + this.catalogItems = ImmutableSet.copyOf(catalogItems); } @XmlElement(name = "CatalogItem") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java index 4571917f6b..bf023faf13 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -62,16 +63,8 @@ public class CatalogsList { /** * @see CatalogsList#getCatalogItems() */ - public Builder catalogs(Collection catalogReferences) { - this.catalogReferences = Sets.newLinkedHashSet(checkNotNull(catalogReferences, "catalogReferences")); - return this; - } - - /** - * @see CatalogsList#getCatalogItems() - */ - public Builder catalog(Reference catalog) { - this.catalogReferences.add(checkNotNull(catalog, "catalog")); + public Builder catalogs(Set catalogReferences) { + this.catalogReferences = checkNotNull(catalogReferences, "catalogReferences"); return this; } @@ -99,7 +92,7 @@ public class CatalogsList { * Gets the value of the catalogReferences property. */ public Set getCatalogItems() { - return this.catalogReferences; + return Collections.unmodifiableSet(this.catalogReferences); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java index e9ebb23274..ee3a4574fc 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java @@ -22,6 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -57,7 +58,7 @@ import com.google.common.collect.Sets; * */ @XmlType(name = "ComposeVAppParams", propOrder = { - "sourcedItem", + "sourcedItems", "allEULAsAccepted" }) @XmlSeeAlso({ @@ -78,15 +79,15 @@ public class ComposeVAppParams public static class Builder extends VAppCreationParamsType.Builder { - private Set sourcedItem = Sets.newLinkedHashSet(); + private Set sourcedItems = Sets.newLinkedHashSet(); private Boolean allEULAsAccepted; private Boolean linkedClone; /** - * @see ComposeVAppParams#getSourcedItem() + * @see ComposeVAppParams#getSourcedItems() */ - public Builder sourcedItem(Set sourcedItem) { - this.sourcedItem = checkNotNull(sourcedItem, "sourcedItem"); + public Builder sourcedItems(Set sourcedItems) { + this.sourcedItems = checkNotNull(sourcedItems, "sourcedItems"); return this; } @@ -109,7 +110,7 @@ public class ComposeVAppParams public ComposeVAppParams build() { return new ComposeVAppParams(description, name, vAppParent, instantiationParams, deploy, powerOn, - sourcedItem, allEULAsAccepted, linkedClone); + sourcedItems, allEULAsAccepted, linkedClone); } @@ -120,16 +121,16 @@ public class ComposeVAppParams public Builder fromComposeVAppParams(ComposeVAppParams in) { return fromVAppCreationParamsType(in) - .sourcedItem(in.getSourcedItem()) + .sourcedItems(in.getSourcedItems()) .allEULAsAccepted(in.isAllEULAsAccepted()) .linkedClone(in.isLinkedClone()); } } public ComposeVAppParams(String description, String name, Reference vAppParent, InstantiationParams instantiationParams, - Boolean deploy, Boolean powerOn, Set sourcedItem, Boolean allEULAsAccepted, Boolean linkedClone) { + Boolean deploy, Boolean powerOn, Set sourcedItems, Boolean allEULAsAccepted, Boolean linkedClone) { super(description, name, vAppParent, instantiationParams, deploy, powerOn); - this.sourcedItem = ImmutableSet.copyOf(sourcedItem); + this.sourcedItems = ImmutableSet.copyOf(sourcedItems); this.allEULAsAccepted = allEULAsAccepted; this.linkedClone = linkedClone; } @@ -140,7 +141,7 @@ public class ComposeVAppParams @XmlElement(name = "SourcedItem") - protected Set sourcedItem = Sets.newLinkedHashSet(); + protected Set sourcedItems = Sets.newLinkedHashSet(); @XmlElement(name = "AllEULAsAccepted") protected Boolean allEULAsAccepted; @XmlAttribute @@ -148,26 +149,9 @@ public class ComposeVAppParams /** * Gets the value of the sourcedItem property. - *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the sourcedItem property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getSourcedItem().add(newItem);
-    * 
- *

- *

- *

- * Objects of the following type(s) are allowed in the list - * {@link SourcedCompositionItemParam } */ - public Set getSourcedItem() { - return this.sourcedItem; + public Set getSourcedItems() { + return Collections.unmodifiableSet(this.sourcedItems); } /** @@ -201,14 +185,14 @@ public class ComposeVAppParams if (o == null || getClass() != o.getClass()) return false; ComposeVAppParams that = ComposeVAppParams.class.cast(o); - return equal(sourcedItem, that.sourcedItem) && + return equal(sourcedItems, that.sourcedItems) && equal(allEULAsAccepted, that.allEULAsAccepted) && equal(linkedClone, that.linkedClone); } @Override public int hashCode() { - return Objects.hashCode(sourcedItem, + return Objects.hashCode(sourcedItems, allEULAsAccepted, linkedClone); } @@ -216,7 +200,7 @@ public class ComposeVAppParams @Override public String toString() { return Objects.toStringHelper("") - .add("sourcedItem", sourcedItem) + .add("sourcedItem", sourcedItems) .add("allEULAsAccepted", allEULAsAccepted) .add("linkedClone", linkedClone).toString(); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java index 6e0b618691..9081103582 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CustomizationSection.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -187,7 +188,7 @@ public class CustomizationSection extends SectionType { * Gets the value of the links property. */ public Set getLinks() { - return this.links; + return Collections.unmodifiableSet(this.links); } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java index 233e132923..4993ac68b6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java @@ -22,6 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.List; import javax.xml.bind.annotation.XmlElement; @@ -112,7 +113,7 @@ public class FilesList { * Gets the value of the file property. */ public List getFiles() { - return this.files; + return Collections.unmodifiableList(this.files); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java index e10406e68f..4a355a029a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java @@ -237,7 +237,7 @@ public class GuestCustomizationSection extends SectionType links) { this.links = checkNotNull(links, "links"); @@ -285,7 +285,7 @@ public class GuestCustomizationSection extends SectionType getLink() { + public Set getLinks() { return Collections.unmodifiableSet(this.links); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java index 6154a70e67..53bb6755e6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; import javax.xml.bind.JAXBElement; @@ -105,7 +106,7 @@ public class InstantiationParams { } - @XmlElementRef(name = "Section", namespace = "http://schemas.dmtf.org/ovf/envelope/1", type = JAXBElement.class) + @XmlElementRef protected Set> sections = Sets.newLinkedHashSet(); /** @@ -113,20 +114,6 @@ public class InstantiationParams { *

* Gets the value of the section property. *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the section property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getSection().add(newItem);
-    * 
- *

- *

- *

* Objects of the following type(s) are allowed in the list * {@link JAXBElement }{@code <}{@link SectionType }{@code >} * {@link JAXBElement }{@code <}{@link VirtualHardwareSection }{@code >} @@ -148,7 +135,7 @@ public class InstantiationParams { * {@link JAXBElement }{@code <}{@link InstallSection }{@code >} */ public Set> getSections() { - return this.sections; + return Collections.unmodifiableSet(this.sections); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java index 0d2d4b1302..c6b2314fd6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java @@ -21,6 +21,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -52,7 +53,7 @@ public class IpAddresses { * @see IpAddresses#getIpAddresses() */ public Builder ipAddresses(Set ipAddresses) { - this.ipAddresses = Sets.newLinkedHashSet(checkNotNull(ipAddresses, "ipAddresses")); + this.ipAddresses.addAll(checkNotNull(ipAddresses, "ipAddresses")); return this; } @@ -85,7 +86,7 @@ public class IpAddresses { private Set ipAddresses = Sets.newLinkedHashSet(); public Set getIpAddresses() { - return ImmutableSet.copyOf(ipAddresses); + return Collections.unmodifiableSet(ipAddresses); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java index f1dd1b0165..116873b042 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java @@ -21,6 +21,8 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; +import java.util.LinkedHashSet; import java.util.Set; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; @@ -85,7 +87,7 @@ public class IpRanges { private Set ipRanges = Sets.newLinkedHashSet(); public Set getIpRanges() { - return ImmutableSet.copyOf(ipRanges); + return Collections.unmodifiableSet(ipRanges); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/LeaseSettingsSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/LeaseSettingsSection.java index 84a905f3a9..314e16405a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/LeaseSettingsSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/LeaseSettingsSection.java @@ -24,18 +24,20 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; import java.util.Collections; +import java.util.Date; import java.util.Set; + import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; -import javax.xml.datatype.XMLGregorianCalendar; import org.jclouds.javax.annotation.Nullable; import org.jclouds.vcloud.director.v1_5.domain.ovf.SectionType; import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -88,8 +90,8 @@ public class LeaseSettingsSection extends SectionType { private Set links = Sets.newLinkedHashSet(); private Integer deploymentLeaseInSeconds; private Integer storageLeaseInSeconds; - private XMLGregorianCalendar deploymentLeaseExpiration; - private XMLGregorianCalendar storageLeaseExpiration; + private Date deploymentLeaseExpiration; + private Date storageLeaseExpiration; private URI href; private String type; @@ -120,7 +122,7 @@ public class LeaseSettingsSection extends SectionType { /** * @see LeaseSettingsSection#getDeploymentLeaseExpiration() */ - public Builder deploymentLeaseExpiration(XMLGregorianCalendar deploymentLeaseExpiration) { + public Builder deploymentLeaseExpiration(Date deploymentLeaseExpiration) { this.deploymentLeaseExpiration = deploymentLeaseExpiration; return this; } @@ -128,7 +130,7 @@ public class LeaseSettingsSection extends SectionType { /** * @see LeaseSettingsSection#getStorageLeaseExpiration() */ - public Builder storageLeaseExpiration(XMLGregorianCalendar storageLeaseExpiration) { + public Builder storageLeaseExpiration(Date storageLeaseExpiration) { this.storageLeaseExpiration = storageLeaseExpiration; return this; } @@ -200,10 +202,10 @@ public class LeaseSettingsSection extends SectionType { protected Integer storageLeaseInSeconds; @XmlElement(name = "DeploymentLeaseExpiration") @XmlSchemaType(name = "dateTime") - protected XMLGregorianCalendar deploymentLeaseExpiration; + protected Date deploymentLeaseExpiration; @XmlElement(name = "StorageLeaseExpiration") @XmlSchemaType(name = "dateTime") - protected XMLGregorianCalendar storageLeaseExpiration; + protected Date storageLeaseExpiration; @XmlAttribute @XmlSchemaType(name = "anyURI") protected URI href; @@ -211,10 +213,10 @@ public class LeaseSettingsSection extends SectionType { protected String type; private LeaseSettingsSection(@Nullable String info, @Nullable Boolean required, Set links, Integer deploymentLeaseInSeconds, - Integer storageLeaseInSeconds, XMLGregorianCalendar deploymentLeaseExpiration, - XMLGregorianCalendar storageLeaseExpiration, URI href, String type) { + Integer storageLeaseInSeconds, Date deploymentLeaseExpiration, + Date storageLeaseExpiration, URI href, String type) { super(info, required); - this.links = links; + this.links = ImmutableSet.copyOf(links); this.deploymentLeaseInSeconds = deploymentLeaseInSeconds; this.storageLeaseInSeconds = storageLeaseInSeconds; this.deploymentLeaseExpiration = deploymentLeaseExpiration; @@ -229,23 +231,6 @@ public class LeaseSettingsSection extends SectionType { /** * Gets the value of the link property. - *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the link property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getLink().add(newItem);
-    * 
- *

- *

- *

- * Objects of the following type(s) are allowed in the list - * {@link Link } */ public Set getLinks() { return Collections.unmodifiableSet(this.links); @@ -273,21 +258,15 @@ public class LeaseSettingsSection extends SectionType { /** * Gets the value of the deploymentLeaseExpiration property. - * - * @return possible object is - * {@link XMLGregorianCalendar } */ - public XMLGregorianCalendar getDeploymentLeaseExpiration() { + public Date getDeploymentLeaseExpiration() { return deploymentLeaseExpiration; } /** * Gets the value of the storageLeaseExpiration property. - * - * @return possible object is - * {@link XMLGregorianCalendar } */ - public XMLGregorianCalendar getStorageLeaseExpiration() { + public Date getStorageLeaseExpiration() { return storageLeaseExpiration; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java index b0580abca5..781f4b684b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Metadata.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -105,8 +106,7 @@ public class Metadata extends ResourceType { */ @Override public Builder links(Set links) { - super.links(Sets.newLinkedHashSet(checkNotNull(links, "links"))); - return this; + return Builder.class.cast(super.links(links)); } /** @@ -145,7 +145,7 @@ public class Metadata extends ResourceType { private Set metadataEntries = Sets.newLinkedHashSet(); public Set getMetadataEntries() { - return ImmutableSet.copyOf(metadataEntries); + return Collections.unmodifiableSet(metadataEntries); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java index 5397647130..6b90af824d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfigSection.java @@ -81,7 +81,7 @@ public class NetworkConfigSection extends SectionType { public static class Builder extends SectionType.Builder { private Set links = Sets.newLinkedHashSet(); - private Set> networkConfigs = Sets.newLinkedHashSet(); + private Set networkConfigs = Sets.newLinkedHashSet(); private URI href; private String type; @@ -96,7 +96,7 @@ public class NetworkConfigSection extends SectionType { /** * @see NetworkConfigSection#getNetworkConfigs() */ - public Builder networkConfig(Set> networkConfigs) { + public Builder networkConfigs(Set networkConfigs) { this.networkConfigs = checkNotNull(networkConfigs, "networkConfigs"); return this; } @@ -125,7 +125,7 @@ public class NetworkConfigSection extends SectionType { public Builder fromNetworkConfigSection(NetworkConfigSection in) { return fromSection(in) .links(in.getLinks()) - .networkConfig(in.getNetworkConfigs()) + .networkConfigs(in.getNetworkConfigs()) .href(in.getHref()) .type(in.getType()); } @@ -157,16 +157,16 @@ public class NetworkConfigSection extends SectionType { } @XmlElement(name = "Link") - protected Set links; + protected Set links = Sets.newLinkedHashSet(); @XmlElement(name = "NetworkConfig") - protected Set> networkConfigs; + protected Set networkConfigs = Sets.newLinkedHashSet(); @XmlAttribute @XmlSchemaType(name = "anyURI") protected URI href; @XmlAttribute protected String type; - public NetworkConfigSection(@Nullable String info, @Nullable Boolean required, Set links, Set> networkConfigs, + public NetworkConfigSection(@Nullable String info, @Nullable Boolean required, Set links, Set networkConfigs, URI href, String type) { super(info, required); this.links = ImmutableSet.copyOf(links); @@ -189,7 +189,7 @@ public class NetworkConfigSection extends SectionType { /** * Gets the value of the networkConfig property. */ - public Set> getNetworkConfigs() { + public Set getNetworkConfigs() { return Collections.unmodifiableSet(this.networkConfigs); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java index 5b623ccef7..5d7caedda8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java @@ -44,9 +44,9 @@ public class NetworkConfiguration { public static class Builder { private IpScope ipScope; - private ReferenceType parentNetwork; + private Reference parentNetwork; private String fenceMode; - private boolean retainNetInfoAcrossDeployments; + private Boolean retainNetInfoAcrossDeployments; private NetworkFeatures features; private SyslogServerSettings syslogServerSettings; private RouterInfo routerInfo; @@ -62,7 +62,7 @@ public class NetworkConfiguration { /** * @see NetworkConfiguration#getParentNetwork() */ - public Builder parentNetwork(ReferenceType parentNetwork) { + public Builder parentNetwork(Reference parentNetwork) { this.parentNetwork = parentNetwork; return this; } @@ -120,7 +120,7 @@ public class NetworkConfiguration { } } - public NetworkConfiguration(IpScope ipScope, ReferenceType parentNetwork, String fenceMode, boolean retainNetInfoAcrossDeployments, + public NetworkConfiguration(IpScope ipScope, Reference parentNetwork, String fenceMode, Boolean retainNetInfoAcrossDeployments, NetworkFeatures features, SyslogServerSettings syslogServerSettings, RouterInfo routerInfo) { this.ipScope = ipScope; this.parentNetwork = parentNetwork; @@ -138,11 +138,11 @@ public class NetworkConfiguration { @XmlElement(name = "IpScope") private IpScope ipScope; @XmlElement(name = "ParentNetwork") - private ReferenceType parentNetwork; + private Reference parentNetwork; @XmlElement(name = "FenceMode") private String fenceMode; @XmlElement(name = "RetainNetInfoAcrossDeployments") - private boolean retainNetInfoAcrossDeployments = false; + private Boolean retainNetInfoAcrossDeployments; @XmlElement(name = "Features") private NetworkFeatures features; @XmlElement(name = "SyslogServerSettings") @@ -162,7 +162,7 @@ public class NetworkConfiguration { /** * @return reference to parent network. */ - public ReferenceType getParentNetwork() { + public Reference getParentNetwork() { return parentNetwork; } @@ -212,7 +212,8 @@ public class NetworkConfiguration { if (o == null || getClass() != o.getClass()) return false; NetworkConfiguration that = NetworkConfiguration.class.cast(o); - return equal(ipScope, that.ipScope) && equal(parentNetwork, that.parentNetwork) && + return equal(ipScope, that.ipScope) && + equal(parentNetwork, that.parentNetwork) && equal(fenceMode, that.fenceMode) && equal(retainNetInfoAcrossDeployments, that.retainNetInfoAcrossDeployments) && equal(features, that.features) && diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java index ce7d5b535e..63431c526b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -83,7 +84,7 @@ public class NetworkConnectionSection extends SectionType { private Integer primaryNetworkConnectionIndex; - private Set networkConnection = Sets.newLinkedHashSet(); + private Set networkConnections = Sets.newLinkedHashSet(); private Set links = Sets.newLinkedHashSet(); private URI href; private String type; @@ -99,8 +100,8 @@ public class NetworkConnectionSection extends SectionType networkConnection) { - this.networkConnection = checkNotNull(networkConnection, "networkConnection"); + public Builder networkConnections(Set networkConnections) { + this.networkConnections = checkNotNull(networkConnections, "networkConnection"); return this; } @@ -130,14 +131,14 @@ public class NetworkConnectionSection extends SectionType getNetworkConnections() { - return this.networkConnections; + return Collections.unmodifiableSet(this.networkConnections); } /** @@ -222,7 +223,7 @@ public class NetworkConnectionSection extends SectionType getLinks() { - return this.links; + return Collections.unmodifiableSet(this.links); } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkFeatures.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkFeatures.java index e8b3c3ffed..b4b0220ac1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkFeatures.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkFeatures.java @@ -21,8 +21,10 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlRootElement; import com.google.common.base.Objects; @@ -47,12 +49,12 @@ public class NetworkFeatures { public static class Builder { - private Set services = Sets.newLinkedHashSet(); + private Set services = Sets.newLinkedHashSet(); /** * @see NetworkFeatures#getNetworkServices() */ - public Builder services(Set services) { + public Builder services(Set services) { this.services = Sets.newLinkedHashSet(checkNotNull(services, "services")); return this; } @@ -60,7 +62,7 @@ public class NetworkFeatures { /** * @see NetworkFeatures#getNetworkServices() */ - public Builder service(NetworkService service) { + public Builder service(NetworkServiceType service) { services.add(checkNotNull(service, "service")); return this; } @@ -78,19 +80,19 @@ public class NetworkFeatures { // For JAXB and builder use } - public NetworkFeatures(Set services) { - this.services = services; + public NetworkFeatures(Set services) { + this.services = ImmutableSet.copyOf(services); } - @XmlElement(name = "NetworkService") - private Set services = Sets.newLinkedHashSet(); + @XmlElementRef + private Set services = Sets.newLinkedHashSet(); /** * @return a Network service. May be any of DhcpService, NatService, IpsecVpnService, * DhcpService, or StaticRoutingService. */ - public Set getNetworkServices() { - return ImmutableSet.copyOf(services); + public Set getNetworkServices() { + return Collections.unmodifiableSet(services); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java index 1c74e8bace..5b107602e6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java @@ -21,6 +21,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -90,7 +91,7 @@ public class OrgList { private Set orgs = Sets.newLinkedHashSet(); public Set getOrgs() { - return ImmutableSet.copyOf(orgs); + return Collections.unmodifiableSet(orgs); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java index d5cd569e17..7deb414781 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @@ -55,7 +56,7 @@ import com.google.common.collect.Sets; * */ @XmlType(name = "ProductSectionList", propOrder = { - "productSection" + "productSections" }) public class ProductSectionList extends ResourceType @@ -76,9 +77,9 @@ public class ProductSectionList private Set productSections = Sets.newLinkedHashSet(); /** - * @see ProductSectionList#getProductSection() + * @see ProductSectionList#getProductSections() */ - public Builder productSection(Set productSections) { + public Builder productSections(Set productSections) { this.productSections = checkNotNull(productSections, "productSection"); return this; } @@ -89,7 +90,6 @@ public class ProductSectionList return productSectionList; } - /** * @see ResourceType#getHref() */ @@ -134,7 +134,7 @@ public class ProductSectionList public Builder fromProductSectionList(ProductSectionList in) { return fromResourceType(in) - .productSection(in.getProductSection()); + .productSections(in.getProductSections()); } } @@ -142,19 +142,19 @@ public class ProductSectionList // For JAXB and builder use } - private ProductSectionList(Set productSection) { - this.productSection = ImmutableSet.copyOf(productSection); + private ProductSectionList(Set productSections) { + this.productSections = ImmutableSet.copyOf(productSections); } @XmlElement(name = "ProductSection", namespace = "http://schemas.dmtf.org/ovf/envelope/1") - protected Set productSection = Sets.newLinkedHashSet(); + protected Set productSections = Sets.newLinkedHashSet(); /** * Gets the value of the productSection property. */ - public Set getProductSection() { - return this.productSection; + public Set getProductSections() { + return Collections.unmodifiableSet(this.productSections); } @Override @@ -164,18 +164,18 @@ public class ProductSectionList if (o == null || getClass() != o.getClass()) return false; ProductSectionList that = ProductSectionList.class.cast(o); - return equal(productSection, that.productSection); + return equal(productSections, that.productSections); } @Override public int hashCode() { - return Objects.hashCode(productSection); + return Objects.hashCode(productSections); } @Override public String toString() { return Objects.toStringHelper("") - .add("productSection", productSection).toString(); + .add("productSections", productSections).toString(); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RelocateParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RelocateParams.java index aeb036e2c5..6573febef1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RelocateParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RelocateParams.java @@ -19,9 +19,15 @@ package org.jclouds.vcloud.director.v1_5.domain; +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import com.google.common.base.Objects; + /** * Parameters to be used for vm relocation. @@ -43,13 +49,38 @@ import javax.xml.bind.annotation.XmlType; * </complexType> * */ -@XmlType(name = "RelocateParams", propOrder = { +@XmlRootElement(name = "RelocateParams") +@XmlType(propOrder = { "datastore" }) public class RelocateParams { + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private Reference datastore; + + public Builder datastore(Reference dataStore) { + this.datastore = dataStore; + return this; + } + + public RelocateParams build() { + return new RelocateParams(datastore); + } + } @XmlElement(name = "Datastore", required = true) - protected ReferenceType datastore; + private Reference datastore; + + private RelocateParams(Reference datastore) { + this.datastore = checkNotNull(datastore); + } + + private RelocateParams() { + // for JAXB + } /** * Gets the value of the datastore property. @@ -60,4 +91,25 @@ public class RelocateParams { public ReferenceType getDatastore() { return datastore; } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + RelocateParams that = RelocateParams.class.cast(o); + return equal(datastore, that.datastore); + } + + @Override + public int hashCode() { + return Objects.hashCode(datastore); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("datastore", datastore).toString(); + } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java index 6bcf21db4d..f45870831a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java @@ -22,6 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @@ -72,7 +73,7 @@ public class ResourceEntities { * @see ResourceEntities#getResourceEntities() */ public Builder resourceEntities(Set resourceEntities) { - this.resourceEntities = checkNotNull(resourceEntities, "resourceEntities"); + this.resourceEntities = Sets.newLinkedHashSet(checkNotNull(resourceEntities, "resourceEntities")); return this; } @@ -110,7 +111,7 @@ public class ResourceEntities { * Gets the value of the resourceEntity property. */ public Set getResourceEntities() { - return this.resourceEntities; + return Collections.unmodifiableSet(this.resourceEntities); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java index b90944e3b4..3574c29f12 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceType.java @@ -22,12 +22,14 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; 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; /** @@ -100,7 +102,7 @@ public abstract class ResourceType> implements URISupp protected ResourceType(URI href, String type, Set links) { this.href = href; this.type = type; - this.links = links; + this.links = ImmutableSet.copyOf(links); } protected ResourceType() { @@ -148,7 +150,7 @@ public abstract class ResourceType> implements URISupp * Set of optional links to an entity or operation associated with this object. */ public Set getLinks() { - return links; + return Collections.unmodifiableSet(links); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java index e72bd5797e..a03d3d58a9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -129,7 +130,7 @@ public class Session { private URI href; public Set getLinks() { - return ImmutableSet.copyOf(links); + return Collections.unmodifiableSet(links); } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java index d699a9096f..f1b7d41cbd 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java @@ -20,7 +20,9 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -107,7 +109,7 @@ public class SourcedCompositionItemParam { * @see SourcedCompositionItemParam#getNetworkAssignments() */ public Builder networkAssignments(Set networkAssignments) { - this.networkAssignments = networkAssignments; + this.networkAssignments = checkNotNull(networkAssignments, "networkAssignments"); return this; } @@ -189,26 +191,9 @@ public class SourcedCompositionItemParam { /** * Gets the value of the networkAssignment property. - *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the networkAssignment property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getNetworkAssignment().add(newItem);
-    * 
- *

- *

- *

- * Objects of the following type(s) are allowed in the list - * {@link NetworkAssignment } */ public Set getNetworkAssignments() { - return this.networkAssignments; + return Collections.unmodifiableSet(this.networkAssignments); } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java index e74dea141f..41c3ee484f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SupportedHardwareVersions.java @@ -28,6 +28,7 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; @@ -100,7 +101,7 @@ public class SupportedHardwareVersions { } private SupportedHardwareVersions(Set supportedHardwareVersions) { - this.supportedHardwareVersions = supportedHardwareVersions; + this.supportedHardwareVersions = ImmutableSet.copyOf(supportedHardwareVersions); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java index b3fe5b4d28..6ac91c6d17 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collection; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -52,7 +53,7 @@ public class TasksInProgress { * @see TasksInProgress#getTasks() */ public Builder tasks(Set tasks) { - this.tasks = Sets.newLinkedHashSet(checkNotNull(tasks, "tasks")); + this.tasks = checkNotNull(tasks, "tasks"); return this; } @@ -73,11 +74,11 @@ public class TasksInProgress { } } - protected TasksInProgress() { + private TasksInProgress() { // For JAXB and builder use } - protected TasksInProgress(Collection tasks) { + private TasksInProgress(Collection tasks) { this.tasks = ImmutableSet.copyOf(tasks); } @@ -85,7 +86,7 @@ public class TasksInProgress { private Set tasks = Sets.newLinkedHashSet(); public Set getTasks() { - return ImmutableSet.copyOf(tasks); + return Collections.unmodifiableSet(tasks); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java index 93a366277e..dc3069972a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java @@ -22,6 +22,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -172,7 +173,7 @@ public class TasksList extends EntityType { private Set tasks = Sets.newLinkedHashSet(); public Set getTasks() { - return ImmutableSet.copyOf(tasks); + return Collections.unmodifiableSet(tasks); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java index 8cbb058911..14842b705b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppNetworkConfiguration.java @@ -61,17 +61,17 @@ import com.google.common.collect.Sets; "configuration", "isDeployed" }) -public class VAppNetworkConfiguration> extends ResourceType { - public static > Builder builder() { - return new Builder(); +public class VAppNetworkConfiguration extends ResourceType { + public static Builder builder() { + return new Builder(); } @Override - public Builder toBuilder() { - return new Builder().fromVAppNetworkConfiguration(this); + public Builder toBuilder() { + return new Builder().fromVAppNetworkConfiguration(this); } - public static class Builder> extends ResourceType.Builder { + public static class Builder extends ResourceType.Builder { private String description; private NetworkConfiguration configuration; @@ -81,7 +81,7 @@ public class VAppNetworkConfiguration> ext /** * @see VAppNetworkConfiguration#getDescription() */ - public Builder description(String description) { + public Builder description(String description) { this.description = description; return this; } @@ -89,7 +89,7 @@ public class VAppNetworkConfiguration> ext /** * @see VAppNetworkConfiguration#getConfiguration() */ - public Builder configuration(NetworkConfiguration configuration) { + public Builder configuration(NetworkConfiguration configuration) { this.configuration = configuration; return this; } @@ -97,7 +97,7 @@ public class VAppNetworkConfiguration> ext /** * @see VAppNetworkConfiguration#isDeployed() */ - public Builder isDeployed(Boolean isDeployed) { + public Builder isDeployed(Boolean isDeployed) { this.isDeployed = isDeployed; return this; } @@ -105,14 +105,14 @@ public class VAppNetworkConfiguration> ext /** * @see VAppNetworkConfiguration#getNetworkName() */ - public Builder networkName(String networkName) { + public Builder networkName(String networkName) { this.networkName = networkName; return this; } - public VAppNetworkConfiguration build() { - return new VAppNetworkConfiguration(href, type, links, + public VAppNetworkConfiguration build() { + return new VAppNetworkConfiguration(href, type, links, description, configuration, isDeployed, networkName); } @@ -121,7 +121,7 @@ public class VAppNetworkConfiguration> ext * @see ResourceType#getHref() */ @Override - public Builder href(URI href) { + public Builder href(URI href) { super.href(href); return this; } @@ -130,7 +130,7 @@ public class VAppNetworkConfiguration> ext * @see ResourceType#getType() */ @Override - public Builder type(String type) { + public Builder type(String type) { super.type(type); return this; } @@ -139,7 +139,7 @@ public class VAppNetworkConfiguration> ext * @see ResourceType#getLinks() */ @Override - public Builder links(Set links) { + public Builder links(Set links) { super.links(Sets.newLinkedHashSet(checkNotNull(links, "links"))); return this; } @@ -148,7 +148,7 @@ public class VAppNetworkConfiguration> ext * @see ResourceType#getLinks() */ @Override - public Builder link(Link link) { + public Builder link(Link link) { super.link(link); return this; } @@ -157,11 +157,11 @@ public class VAppNetworkConfiguration> ext * {@inheritDoc} */ @SuppressWarnings("unchecked") - public Builder fromResourceType(ResourceType in) { + public Builder fromResourceType(ResourceType in) { return Builder.class.cast(super.fromResourceType(in)); } - public Builder fromVAppNetworkConfiguration(VAppNetworkConfiguration in) { + public Builder fromVAppNetworkConfiguration(VAppNetworkConfiguration in) { return fromResourceType(in) .description(in.getDescription()) .configuration(in.getConfiguration()) @@ -238,7 +238,7 @@ public class VAppNetworkConfiguration> ext return true; if (o == null || getClass() != o.getClass()) return false; - VAppNetworkConfiguration that = VAppNetworkConfiguration.class.cast(o); + VAppNetworkConfiguration that = VAppNetworkConfiguration.class.cast(o); return equal(description, that.description) && equal(configuration, that.configuration) && equal(isDeployed, that.isDeployed) && diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java index fd1e3576d5..3406562e5f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/cim/ResourceAllocationSettingData.java @@ -20,14 +20,12 @@ package org.jclouds.vcloud.director.v1_5.domain.cim; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.List; import java.util.Map; import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import com.google.common.collect.*; /** * @@ -238,7 +236,7 @@ public class ResourceAllocationSettingData extends ManagedElement { * @see ResourceAllocationSettingData#getConnections */ public Builder connections(List connections) { - this.connections.addAll(checkNotNull(connections, "connections")); + this.connections = Lists.newArrayList(checkNotNull(connections, "connections")); return this; } @@ -246,7 +244,7 @@ public class ResourceAllocationSettingData extends ManagedElement { * @see ResourceAllocationSettingData#getHostResources */ public Builder hostResources(List hostResources) { - this.hostResources.addAll(checkNotNull(hostResources, "hostResources")); + this.hostResources = Lists.newArrayList(checkNotNull(hostResources, "hostResources")); return this; } @@ -665,7 +663,7 @@ public class ResourceAllocationSettingData extends ManagedElement { * network or switch port. */ public List getConnections() { - return connections; + return Collections.unmodifiableList(connections); } /** @@ -687,7 +685,7 @@ public class ResourceAllocationSettingData extends ManagedElement { * based on host resources that are identified by element values. */ public List getHostResources() { - return hostResources; + return Collections.unmodifiableList(hostResources); } @Override From 139fe394f76e8ffb6e3c9bb89ba4aa3367ec51e3 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Mon, 5 Mar 2012 21:34:56 +0000 Subject: [PATCH 02/13] VCloud Director 1.5: vAppTemplate client - expect tests for most methods and supporting domain objects --- .../v1_5/VCloudDirectorMediaType.java | 6 +- .../director/v1_5/domain/DhcpService.java | 173 +++++++ .../director/v1_5/domain/FirewallRule.java | 392 ++++++++++++++++ .../v1_5/domain/FirewallRuleProtocols.java | 190 ++++++++ .../director/v1_5/domain/FirewallService.java | 195 ++++++++ .../v1_5/domain/IpsecVpnLocalPeer.java | 93 ++++ .../v1_5/domain/IpsecVpnManagedPeerType.java | 111 +++++ .../v1_5/domain/IpsecVpnPeerType.java | 31 ++ .../v1_5/domain/IpsecVpnRemotePeer.java | 205 +++++++++ .../director/v1_5/domain/IpsecVpnService.java | 195 ++++++++ .../v1_5/domain/IpsecVpnThirdPartyPeer.java | 68 +++ .../director/v1_5/domain/IpsecVpnTunnel.java | 431 ++++++++++++++++++ .../domain/IpsecVpnUnmanagedPeerType.java | 29 ++ .../v1_5/domain/NatOneToOneBasicRule.java | 185 ++++++++ .../v1_5/domain/NatOneToOneVmRule.java | 209 +++++++++ .../v1_5/domain/NatPortForwardingRule.java | 234 ++++++++++ .../vcloud/director/v1_5/domain/NatRule.java | 242 ++++++++++ .../director/v1_5/domain/NatService.java | 179 ++++++++ .../director/v1_5/domain/NatVmRule.java | 262 +++++++++++ ...rkService.java => NetworkServiceType.java} | 44 +- .../director/v1_5/domain/StaticRoute.java | 214 +++++++++ .../v1_5/domain/StaticRoutingService.java | 141 ++++++ .../director/v1_5/domain/VAppTemplate.java | 30 +- .../v1_5/domain/VAppTemplateChildren.java | 3 +- .../director/v1_5/domain/ovf/SectionType.java | 2 +- .../features/VAppTemplateAsyncClient.java | 72 +-- .../v1_5/features/VAppTemplateClient.java | 24 +- .../vcloud/director/v1_5/domain/Checks.java | 4 +- .../VAppTemplateClientExpectTest.java | 334 +++++++++++++- .../vapptemplate/customizationSection.xml | 11 + .../guestCustomizationSection.xml | 19 + .../vapptemplate/leaseSettingsSection.xml | 12 + .../test/resources/vapptemplate/metadata.xml | 8 + .../resources/vapptemplate/metadataValue.xml | 4 + .../vapptemplate/networkConfigSection.xml | 64 +++ .../resources/vapptemplate/relocateParams.xml | 6 + 36 files changed, 4322 insertions(+), 100 deletions(-) create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnManagedPeerType.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnPeerType.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnTunnel.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnUnmanagedPeerType.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneBasicRule.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneVmRule.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatPortForwardingRule.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java rename labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/{NetworkService.java => NetworkServiceType.java} (67%) create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java create mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/customizationSection.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/guestCustomizationSection.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/leaseSettingsSection.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/metadata.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/metadataValue.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/networkConfigSection.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/relocateParams.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index f9622b0723..6d4c3a0f90 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -109,9 +109,9 @@ public class VCloudDirectorMediaType { public static final String VAPP_TEMPLATE = "application/vnd.vmware.vcloud.vAppTemplate+xml"; - public static final String CUSTOMIZATION_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String CUSTOMIZATION_SECTION = "application/vnd.vmware.vcloud.customizationSection+xml"; - public static final String GUEST_CUSTOMIZATION_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String GUEST_CUSTOMIZATION_SECTION = "application/vnd.vmware.vcloud.guestCustomizationSection+xml"; public static final String NETWORK_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; @@ -123,7 +123,7 @@ public class VCloudDirectorMediaType { public static final String RELOCATE_TEMPLATE = "application/vnd.vmware.vcloud.relocateTemplate+xml"; - public static final String LEASE_SETTINGS_SECTION = "application/vnd.vmware.vcloud.leastSettingsSection+xml"; + public static final String LEASE_SETTINGS_SECTION = "application/vnd.vmware.vcloud.leaseSettingsSection+xml"; public static final String ENVELOPE = "application/vnd.???"; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java new file mode 100644 index 0000000000..bbe8f04679 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java @@ -0,0 +1,173 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + +/** + * Represents a DHCP network service. + * + *

Java class for DhcpService complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="DhcpService">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}NetworkServiceType">
+ *       <sequence>
+ *         <element name="DefaultLeaseTime" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         <element name="MaxLeaseTime" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/>
+ *         <element name="IpRange" type="{http://www.vmware.com/vcloud/v1.5}IpRangeType" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * @author Adam Lowe + */ +@XmlRootElement(name = "DhcpService") +@XmlType(propOrder = { + "defaultLeaseTime", + "maxLeaseTime", + "ipRange" +}) +public class DhcpService extends NetworkServiceType { + + public static Builder builder() { + return new Builder(); + } + + @Override + public Builder toBuilder() { + return new Builder().fromDhcpService(this); + } + + public static class Builder extends NetworkServiceType.Builder { + private int defaultLeaseTime; + private int maxLeaseTime; + private IpRange ipRange; + + public Builder defaultLeaseTime(int defaultLeaseTime) { + this.defaultLeaseTime = defaultLeaseTime; + return this; + } + + public Builder maxLeaseTime(int maxLeaseTime) { + this.maxLeaseTime = maxLeaseTime; + return this; + } + + public Builder ipRange(IpRange ipRange) { + this.ipRange = ipRange; + return this; + } + + public DhcpService build() { + return new DhcpService(isEnabled, defaultLeaseTime, maxLeaseTime, ipRange); + } + + public Builder fromDhcpService(DhcpService in) { + return fromNetworkService(in).defaultLeaseTime(in.getDefaultLeaseTime()).maxLeaseTime(in.getMaxLeaseTime()) + .ipRange(in.getIpRange()); + } + + public Builder fromNetworkService(NetworkServiceType in) { + return Builder.class.cast(super.fromNetworkServiceType(in)); + } + + @Override + public Builder enabled(boolean enabled) { + this.isEnabled = enabled; + return this; + } + + } + + @XmlElement(name = "DefaultLeaseTime") + private int defaultLeaseTime; + @XmlElement(name = "MaxLeaseTime") + private int maxLeaseTime; + @XmlElement(name = "IpRange") + private IpRange ipRange; + + private DhcpService(boolean enabled, int defaultLeaseTime, int maxLeaseTime, IpRange ipRange) { + super(enabled); + this.defaultLeaseTime = defaultLeaseTime; + this.maxLeaseTime = maxLeaseTime; + this.ipRange = ipRange; + } + + private DhcpService() { + // for JAXB + } + + /** + * @return default lease in seconds for DHCP addresses. + */ + public int getDefaultLeaseTime() { + return defaultLeaseTime; + } + + /** + * @return Max lease in seconds for DHCP addresses. + */ + public int getMaxLeaseTime() { + return maxLeaseTime; + } + + /** + * @return IP range for DHCP addresses. + */ + public IpRange getIpRange() { + return ipRange; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + DhcpService that = DhcpService.class.cast(o); + return super.equals(that) + && equal(defaultLeaseTime, that.defaultLeaseTime) + && equal(maxLeaseTime, that.maxLeaseTime) + && equal(ipRange, that.ipRange); + } + + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), defaultLeaseTime, maxLeaseTime, ipRange); + } + + @Override + protected Objects.ToStringHelper string() { + return super.string().add("defaultLeastTime", defaultLeaseTime).add("maxLeaseTime", maxLeaseTime).add("ipRange", ipRange); + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java new file mode 100644 index 0000000000..2956bc6117 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRule.java @@ -0,0 +1,392 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents a firewall rule. + *

+ *

+ *

Java class for FirewallRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="FirewallRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="IsEnabled" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         <element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="Policy" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="Protocols" minOccurs="0">
+ *           <complexType>
+ *             <complexContent>
+ *               <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *                 <choice>
+ *                   <sequence>
+ *                     <element name="Tcp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *                     <element name="Udp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *                   </sequence>
+ *                   <element name="Icmp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *                   <element name="Any" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *                 </choice>
+ *               </restriction>
+ *             </complexContent>
+ *           </complexType>
+ *         </element>
+ *         <element name="Port" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="DestinationIp" type="{http://www.vmware.com/vcloud/v1.5}FirewallIpAddressType"/>
+ *         <element name="SourcePort" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="SourceIp" type="{http://www.vmware.com/vcloud/v1.5}FirewallIpAddressType"/>
+ *         <element name="Direction" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="EnableLogging" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "FirewallRule", propOrder = { + "isEnabled", + "description", + "policy", + "protocols", + "port", + "destinationIp", + "sourcePort", + "sourceIp", + "direction", + "enableLogging" +}) +public class FirewallRule { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromFirewallRule(this); + } + + public static class Builder { + + private Boolean isEnabled; + private String description; + private String policy; + private FirewallRuleProtocols protocols; + private Integer port; + private String destinationIp; + private Integer sourcePort; + private String sourceIp; + private String direction; + private Boolean enableLogging; + + /** + * @see FirewallRule#isEnabled() + */ + public Builder isEnabled(Boolean isEnabled) { + this.isEnabled = isEnabled; + return this; + } + + /** + * @see FirewallRule#getDescription() + */ + public Builder description(String description) { + this.description = description; + return this; + } + + /** + * @see FirewallRule#getPolicy() + */ + public Builder policy(String policy) { + this.policy = policy; + return this; + } + + /** + * @see FirewallRule#getProtocols() + */ + public Builder protocols(FirewallRuleProtocols protocols) { + this.protocols = protocols; + return this; + } + + /** + * @see FirewallRule#getPort() + */ + public Builder port(int port) { + this.port = port; + return this; + } + + /** + * @see FirewallRule#getDestinationIp() + */ + public Builder destinationIp(String destinationIp) { + this.destinationIp = destinationIp; + return this; + } + + /** + * @see FirewallRule#getSourcePort() + */ + public Builder sourcePort(int sourcePort) { + this.sourcePort = sourcePort; + return this; + } + + /** + * @see FirewallRule#getSourceIp() + */ + public Builder sourceIp(String sourceIp) { + this.sourceIp = sourceIp; + return this; + } + + /** + * @see FirewallRule#getDirection() + */ + public Builder direction(String direction) { + this.direction = direction; + return this; + } + + /** + * @see FirewallRule#isEnableLogging() + */ + public Builder enableLogging(Boolean enableLogging) { + this.enableLogging = enableLogging; + return this; + } + + public FirewallRule build() { + return new FirewallRule( + isEnabled, description, policy, protocols, port, destinationIp, sourcePort, sourceIp, direction, enableLogging); + } + + public Builder fromFirewallRule(FirewallRule in) { + return isEnabled(in.isEnabled()) + .description(in.getDescription()) + .policy(in.getPolicy()) + .protocols(in.getProtocols()) + .port(in.getPort()) + .destinationIp(in.getDestinationIp()) + .sourcePort(in.getSourcePort()) + .sourceIp(in.getSourceIp()) + .direction(in.getDirection()) + .enableLogging(in.isEnableLogging()); + } + } + + private FirewallRule(Boolean enabled, String description, String policy, FirewallRuleProtocols protocols, Integer port, + String destinationIp, Integer sourcePort, String sourceIp, String direction, Boolean enableLogging) { + isEnabled = enabled; + this.description = description; + this.policy = policy; + this.protocols = protocols; + this.port = port; + this.destinationIp = destinationIp; + this.sourcePort = sourcePort; + this.sourceIp = sourceIp; + this.direction = direction; + this.enableLogging = enableLogging; + } + + private FirewallRule() { + // For JAXB + } + + @XmlElement(name = "IsEnabled") + protected Boolean isEnabled; + @XmlElement(name = "Description") + protected String description; + @XmlElement(name = "Policy") + protected String policy; + @XmlElement(name = "Protocols") + protected FirewallRuleProtocols protocols; + @XmlElement(name = "Port") + protected Integer port; + @XmlElement(name = "DestinationIp", required = true) + protected String destinationIp; + @XmlElement(name = "SourcePort") + protected Integer sourcePort; + @XmlElement(name = "SourceIp", required = true) + protected String sourceIp; + @XmlElement(name = "Direction") + protected String direction; + @XmlElement(name = "EnableLogging") + protected Boolean enableLogging; + + /** + * Gets the value of the isEnabled property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isEnabled() { + return isEnabled; + } + + /** + * Gets the value of the description property. + * + * @return possible object is + * {@link String } + */ + public String getDescription() { + return description; + } + + /** + * Gets the value of the policy property. + * + * @return possible object is + * {@link String } + */ + public String getPolicy() { + return policy; + } + + /** + * Gets the value of the protocols property. + * + * @return possible object is + * {@link FirewallRuleProtocols } + */ + public FirewallRuleProtocols getProtocols() { + return protocols; + } + + /** + * Gets the value of the port property. + */ + public int getPort() { + return port; + } + + /** + * Gets the value of the destinationIp property. + * + * @return possible object is + * {@link String } + */ + public String getDestinationIp() { + return destinationIp; + } + + /** + * Gets the value of the sourcePort property. + */ + public int getSourcePort() { + return sourcePort; + } + + /** + * Gets the value of the sourceIp property. + * + * @return possible object is + * {@link String } + */ + public String getSourceIp() { + return sourceIp; + } + + /** + * Gets the value of the direction property. + * + * @return possible object is + * {@link String } + */ + public String getDirection() { + return direction; + } + + /** + * Gets the value of the enableLogging property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isEnableLogging() { + return enableLogging; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + FirewallRule that = FirewallRule.class.cast(o); + return equal(isEnabled, that.isEnabled) && + equal(description, that.description) && + equal(policy, that.policy) && + equal(protocols, that.protocols) && + equal(port, that.port) && + equal(destinationIp, that.destinationIp) && + equal(sourcePort, that.sourcePort) && + equal(sourceIp, that.sourceIp) && + equal(direction, that.direction) && + equal(enableLogging, that.enableLogging); + } + + @Override + public int hashCode() { + return Objects.hashCode(isEnabled, + description, + policy, + protocols, + port, + destinationIp, + sourcePort, + sourceIp, + direction, + enableLogging); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("isEnabled", isEnabled) + .add("description", description) + .add("policy", policy) + .add("protocols", protocols) + .add("port", port) + .add("destinationIp", destinationIp) + .add("sourcePort", sourcePort) + .add("sourceIp", sourceIp) + .add("direction", direction) + .add("enableLogging", enableLogging).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java new file mode 100644 index 0000000000..be2486a61d --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallRuleProtocols.java @@ -0,0 +1,190 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSeeAlso; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + *

Java class for anonymous complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType>
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <choice>
+ *         <sequence>
+ *           <element name="Tcp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *           <element name="Udp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         </sequence>
+ *         <element name="Icmp" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         <element name="Any" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *       </choice>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(propOrder = { + "tcp", + "udp", + "icmp", + "any" +}) +public class FirewallRuleProtocols { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromProtocols(this); + } + + public static class Builder { + private Boolean tcp; + private Boolean udp; + private Boolean icmp; + private Boolean any; + + public Builder tcp(Boolean tcp) { + this.tcp = tcp; + return this; + } + + public Builder udp(Boolean udp) { + this.udp = udp; + return this; + } + + public Builder icmp(Boolean icmp) { + this.icmp = icmp; + return this; + } + + public Builder any(Boolean any) { + this.any = any; + return this; + } + + public Builder fromProtocols(FirewallRuleProtocols in) { + return tcp(in.isTcp()).udp(in.isUdp()).icmp(in.isIcmp()).any(in.isAny()); + } + + public FirewallRuleProtocols build() { + return new FirewallRuleProtocols(tcp, udp, icmp, any); + } + } + + @XmlElement(name = "Tcp") + private Boolean tcp; + @XmlElement(name = "Udp") + private Boolean udp; + @XmlElement(name = "Icmp") + private Boolean icmp; + @XmlElement(name = "Any") + private Boolean any; + + private FirewallRuleProtocols(Boolean tcp, Boolean udp, Boolean icmp, Boolean any) { + this.tcp = tcp; + this.udp = udp; + this.icmp = icmp; + this.any = any; + } + + private FirewallRuleProtocols() { + // for JAXB + } + + /** + * Gets the value of the tcp property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isTcp() { + return tcp; + } + + /** + * Gets the value of the udp property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isUdp() { + return udp; + } + + /** + * Gets the value of the icmp property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isIcmp() { + return icmp; + } + + /** + * Gets the value of the any property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isAny() { + return any; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + FirewallRuleProtocols that = FirewallRuleProtocols.class.cast(o); + return equal(tcp, that.tcp) && + equal(udp, that.udp) && + equal(icmp, that.icmp) && + equal(any, that.any); + } + + @Override + public int hashCode() { + return Objects.hashCode(tcp, udp, icmp, any); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("tcp", tcp) + .add("udp", udp) + .add("icmp", icmp) + .add("any", any).toString(); + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java new file mode 100644 index 0000000000..5e261c6633 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java @@ -0,0 +1,195 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.Collections; +import java.util.Set; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; + + +/** + * Represents a network firewall service. + *

+ *

+ *

Java class for FirewallService complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="FirewallService">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}NetworkServiceType">
+ *       <sequence>
+ *         <element name="DefaultAction" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="LogDefaultAction" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         <element name="FirewallRule" type="{http://www.vmware.com/vcloud/v1.5}FirewallRuleType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlRootElement(name = "FirewallService") +@XmlType(propOrder = { + "defaultAction", + "logDefaultAction", + "firewallRules" +}) +public class FirewallService extends NetworkServiceType { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromFirewallService(this); + } + + public static class Builder extends NetworkServiceType.Builder { + private String defaultAction; + private Boolean logDefaultAction; + private Set firewallRules = Sets.newLinkedHashSet(); + + /** + * @see FirewallService#getDefaultAction() + */ + public Builder defaultAction(String defaultAction) { + this.defaultAction = defaultAction; + return this; + } + + /** + * @see FirewallService#isLogDefaultAction() + */ + public Builder logDefaultAction(Boolean logDefaultAction) { + this.logDefaultAction = logDefaultAction; + return this; + } + + /** + * @see FirewallService#getFirewallRules() + */ + public Builder firewallRules(Set firewallRules) { + this.firewallRules = checkNotNull(firewallRules, "firewallRules"); + return this; + } + + public FirewallService build() { + return new FirewallService(isEnabled, defaultAction, logDefaultAction, firewallRules); + + } + + @Override + public Builder fromNetworkServiceType(NetworkServiceType in) { + return Builder.class.cast(super.fromNetworkServiceType(in)); + } + + public Builder fromFirewallService(FirewallService in) { + return fromNetworkServiceType(in) + .defaultAction(in.getDefaultAction()) + .logDefaultAction(in.isLogDefaultAction()) + .firewallRules(in.getFirewallRules()); + } + } + + private FirewallService(boolean enabled, String defaultAction, Boolean logDefaultAction, Set firewallRules) { + super(enabled); + this.defaultAction = defaultAction; + this.logDefaultAction = logDefaultAction; + this.firewallRules = ImmutableSet.copyOf(firewallRules); + } + + private FirewallService() { + // For JAXB and builder use + } + + @XmlElement(name = "DefaultAction") + protected String defaultAction; + @XmlElement(name = "LogDefaultAction") + protected Boolean logDefaultAction; + @XmlElement(name = "FirewallRule") + protected Set firewallRules = Sets.newLinkedHashSet(); + + /** + * Gets the value of the defaultAction property. + * + * @return possible object is + * {@link String } + */ + public String getDefaultAction() { + return defaultAction; + } + + /** + * Gets the value of the logDefaultAction property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isLogDefaultAction() { + return logDefaultAction; + } + + /** + * Gets the value of the firewallRule property. + */ + public Set getFirewallRules() { + return Collections.unmodifiableSet(this.firewallRules); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + FirewallService that = FirewallService.class.cast(o); + return equal(defaultAction, that.defaultAction) && + equal(logDefaultAction, that.logDefaultAction) && + equal(firewallRules, that.firewallRules); + } + + @Override + public int hashCode() { + return Objects.hashCode(defaultAction, + logDefaultAction, + firewallRules); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("defaultAction", defaultAction) + .add("logDefaultAction", logDefaultAction) + .add("firewallRules", firewallRules).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java new file mode 100644 index 0000000000..27ca6519d2 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnLocalPeer.java @@ -0,0 +1,93 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * + * Gives more details of local peer end point. + * + * + *

Java class for IpsecVpnLocalPeer complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="IpsecVpnLocalPeer">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}IpsecVpnManagedPeerType">
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlRootElement(name = "IpsecVpnLocalPeer") +public class IpsecVpnLocalPeer + extends IpsecVpnManagedPeerType + +{ + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromIpsecVpnLocalPeer(this); + } + + public static class Builder extends IpsecVpnManagedPeerType.Builder { + public IpsecVpnLocalPeer build() { + return new IpsecVpnLocalPeer(id, name); + } + + @Override + public Builder fromIpsecVpnManagedPeerType(IpsecVpnManagedPeerType in) { + return Builder.class.cast(super.fromIpsecVpnManagedPeerType(in)); + } + + public Builder fromIpsecVpnLocalPeer(IpsecVpnLocalPeer in) { + return fromIpsecVpnManagedPeerType(in); + } + + @Override + public Builder id(String id) { + return Builder.class.cast(super.id(id)); + } + + @Override + public Builder name(String name) { + return Builder.class.cast(super.name(name)); + } + + } + + private IpsecVpnLocalPeer(String id, String name) { + super(id, name); + } + + private IpsecVpnLocalPeer() { + // For JAXB + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnManagedPeerType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnManagedPeerType.java new file mode 100644 index 0000000000..c1f30df663 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnManagedPeerType.java @@ -0,0 +1,111 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSeeAlso; + +import com.google.common.base.Objects; + +/** + */ +@XmlSeeAlso( + IpsecVpnLocalPeer.class +) +public abstract class IpsecVpnManagedPeerType> extends IpsecVpnPeerType { + + public static abstract class Builder> { + protected String id; + protected String name; + + /** + * @see IpRange#getStartAddress() + */ + public Builder id(String id) { + this.id = id; + return this; + } + + /** + * @see IpRange#getEndAddress() + */ + public Builder name(String name) { + this.name = name; + return this; + } + + public Builder fromIpsecVpnManagedPeerType(IpsecVpnManagedPeerType in) { + return id(in.getId()).name(in.getName()); + } + } + + @XmlElement(name = "Id", required = true) + protected String id; + @XmlElement(name = "Name", required = true) + protected String name; + + protected IpsecVpnManagedPeerType(String id, String name) { + this.id = id; + this.name = name; + } + + protected IpsecVpnManagedPeerType() { + // for JAXB + } + + /** + * @return id of peer network + */ + public String getId() { + return id; + } + + /** + * @return the name of the peer network + */ + public String getName() { + return name; + } + + @Override + public int hashCode() { + return Objects.hashCode(id, name); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + IpsecVpnManagedPeerType that = IpsecVpnManagedPeerType.class.cast(o); + return equal(id, that.id) && equal(name, that.name); + } + + @Override + public String toString() { + return string().toString(); + } + + protected Objects.ToStringHelper string() { + return Objects.toStringHelper("").add("id", id).add("name", name); + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnPeerType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnPeerType.java new file mode 100644 index 0000000000..03128b0d32 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnPeerType.java @@ -0,0 +1,31 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.jclouds.vcloud.director.v1_5.domain; + +import javax.xml.bind.annotation.XmlSeeAlso; + +/** + */ +@XmlSeeAlso({ + IpsecVpnLocalPeer.class, + IpsecVpnRemotePeer.class, + IpsecVpnThirdPartyPeer.class +}) +public abstract class IpsecVpnPeerType> { +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java new file mode 100644 index 0000000000..46f7631792 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java @@ -0,0 +1,205 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Gives more details of remote peer end point. + *

+ *

+ *

Java class for IpsecVpnRemotePeer complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="IpsecVpnRemotePeer">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}IpsecVpnManagedPeerType">
+ *       <sequence>
+ *         <element name="VcdUrl" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="VcdOrganization" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="VcdUsername" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlRootElement(name = "IpsecVpnRemotePeer") +@XmlType(propOrder = { + "vcdUrl", + "vcdOrganization", + "vcdUsername" +}) +public class IpsecVpnRemotePeer extends IpsecVpnManagedPeerType { + @SuppressWarnings("unchecked") + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromIpsecVpnRemotePeer(this); + } + + public static class Builder extends IpsecVpnManagedPeerType.Builder { + private String vcdUrl; + private String vcdOrganization; + private String vcdUsername; + + /** + * @see IpsecVpnRemotePeer#getVcdUrl() + */ + public Builder vcdUrl(String vcdUrl) { + this.vcdUrl = vcdUrl; + return this; + } + + /** + * @see IpsecVpnRemotePeer#getVcdOrganization() + */ + public Builder vcdOrganization(String vcdOrganization) { + this.vcdOrganization = vcdOrganization; + return this; + } + + /** + * @see IpsecVpnRemotePeer#getVcdUsername() + */ + public Builder vcdUsername(String vcdUsername) { + this.vcdUsername = vcdUsername; + return this; + } + + public IpsecVpnRemotePeer build() { + return new IpsecVpnRemotePeer(id, name, vcdUrl, vcdOrganization, vcdUsername); + } + + @Override + public Builder fromIpsecVpnManagedPeerType(IpsecVpnManagedPeerType in) { + return Builder.class.cast(super.fromIpsecVpnManagedPeerType(in)); + } + + public Builder fromIpsecVpnRemotePeer(IpsecVpnRemotePeer in) { + return fromIpsecVpnManagedPeerType(in) + .vcdUrl(in.getVcdUrl()) + .vcdOrganization(in.getVcdOrganization()) + .vcdUsername(in.getVcdUsername()); + } + + + @Override + public Builder id(String id) { + return Builder.class.cast(super.id(id)); + } + + @Override + public Builder name(String name) { + return Builder.class.cast(super.name(name)); + } + + } + + private IpsecVpnRemotePeer(String id, String name, String vcdUrl, String vcdOrganization, String vcdUsername) { + super(id, name); + this.vcdUrl = vcdUrl; + this.vcdOrganization = vcdOrganization; + this.vcdUsername = vcdUsername; + } + + private IpsecVpnRemotePeer() { + // For JAXB and builder use + } + + @XmlElement(name = "VcdUrl", required = true) + protected String vcdUrl; + @XmlElement(name = "VcdOrganization", required = true) + protected String vcdOrganization; + @XmlElement(name = "VcdUsername", required = true) + protected String vcdUsername; + + /** + * Gets the value of the vcdUrl property. + * + * @return possible object is + * {@link String } + */ + public String getVcdUrl() { + return vcdUrl; + } + + /** + * Gets the value of the vcdOrganization property. + * + * @return possible object is + * {@link String } + */ + public String getVcdOrganization() { + return vcdOrganization; + } + + /** + * Gets the value of the vcdUsername property. + * + * @return possible object is + * {@link String } + */ + public String getVcdUsername() { + return vcdUsername; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + IpsecVpnRemotePeer that = IpsecVpnRemotePeer.class.cast(o); + return super.equals(that) + && equal(vcdUrl, that.vcdUrl) + && equal(vcdOrganization, that.vcdOrganization) + && equal(vcdUsername, that.vcdUsername); + } + + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), + vcdUrl, + vcdOrganization, + vcdUsername); + } + + @Override + protected Objects.ToStringHelper string() { + return super.string() + .add("vcdUrl", vcdUrl) + .add("vcdOrganization", vcdOrganization) + .add("vcdUsername", vcdUsername); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java new file mode 100644 index 0000000000..060d3a2ba3 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java @@ -0,0 +1,195 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.Collections; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + + +/** + * Represents an IPSec-VPN network service. + *

+ *

+ *

Java class for IpsecVpnService complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="IpsecVpnService">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}NetworkServiceType">
+ *       <sequence>
+ *         <element name="ExternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType" minOccurs="0"/>
+ *         <element name="PublicIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType" minOccurs="0"/>
+ *         <element name="IpsecVpnTunnel" type="{http://www.vmware.com/vcloud/v1.5}IpsecVpnTunnelType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlRootElement(name = "IpsecVpnService") +@XmlType(propOrder = { + "externalIpAddress", + "publicIpAddress", + "ipsecVpnTunnels" +}) +public class IpsecVpnService extends NetworkServiceType { + @SuppressWarnings("unchecked") + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromIpsecVpnService(this); + } + + public static class Builder extends NetworkServiceType.Builder { + + private String externalIpAddress; + private String publicIpAddress; + private List ipsecVpnTunnels; + + /** + * @see IpsecVpnService#getExternalIpAddress() + */ + public Builder externalIpAddress(String externalIpAddress) { + this.externalIpAddress = externalIpAddress; + return this; + } + + /** + * @see IpsecVpnService#getPublicIpAddress() + */ + public Builder publicIpAddress(String publicIpAddress) { + this.publicIpAddress = publicIpAddress; + return this; + } + + /** + * @see IpsecVpnService#getIpsecVpnTunnels() + */ + public Builder ipsecVpnTunnels(List ipsecVpnTunnels) { + this.ipsecVpnTunnels = checkNotNull(ipsecVpnTunnels, "ipsecVpnTunnels"); + return this; + } + + public IpsecVpnService build() { + return new IpsecVpnService(isEnabled, externalIpAddress, publicIpAddress, ipsecVpnTunnels); + } + + @Override + public Builder fromNetworkServiceType(NetworkServiceType in) { + return Builder.class.cast(super.fromNetworkServiceType(in)); + } + + public Builder fromIpsecVpnService(IpsecVpnService in) { + return fromNetworkServiceType(in) + .externalIpAddress(in.getExternalIpAddress()) + .publicIpAddress(in.getPublicIpAddress()) + .ipsecVpnTunnels(in.getIpsecVpnTunnels()); + } + } + + private IpsecVpnService(boolean enabled, String externalIpAddress, String publicIpAddress, List ipsecVpnTunnel) { + super(enabled); + this.externalIpAddress = externalIpAddress; + this.publicIpAddress = publicIpAddress; + this.ipsecVpnTunnels = ImmutableList.copyOf(ipsecVpnTunnel); + } + + private IpsecVpnService() { + // For JAXB and builder use + } + + @XmlElement(name = "ExternalIpAddress") + protected String externalIpAddress; + @XmlElement(name = "PublicIpAddress") + protected String publicIpAddress; + @XmlElement(name = "IpsecVpnTunnel") + protected List ipsecVpnTunnels = Lists.newArrayList(); + + /** + * Gets the value of the externalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getExternalIpAddress() { + return externalIpAddress; + } + + /** + * Gets the value of the publicIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getPublicIpAddress() { + return publicIpAddress; + } + + /** + * Gets the value of the ipsecVpnTunnel property. + */ + public List getIpsecVpnTunnels() { + return Collections.unmodifiableList(this.ipsecVpnTunnels); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + IpsecVpnService that = IpsecVpnService.class.cast(o); + return equal(externalIpAddress, that.externalIpAddress) && + equal(publicIpAddress, that.publicIpAddress) && + equal(ipsecVpnTunnels, that.ipsecVpnTunnels); + } + + @Override + public int hashCode() { + return Objects.hashCode(externalIpAddress, + publicIpAddress, + ipsecVpnTunnels); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("externalIpAddress", externalIpAddress) + .add("publicIpAddress", publicIpAddress) + .add("ipsecVpnTunnels", ipsecVpnTunnels).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java new file mode 100644 index 0000000000..d9ccd8d015 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java @@ -0,0 +1,68 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * + * Gives more details of third party peer end point. + * + * + *

Java class for IpsecVpnThirdPartyPeer complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="IpsecVpnThirdPartyPeer">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}IpsecVpnUnmanagedPeerType">
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlRootElement(name = "IpsecVpnThirdPartyPeer") +public class IpsecVpnThirdPartyPeer extends IpsecVpnUnmanagedPeerType { + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromIpsecVpnThirdPartyPeer(this); + } + + public static class Builder { + public IpsecVpnThirdPartyPeer build() { + return new IpsecVpnThirdPartyPeer(); + } + + public Builder fromIpsecVpnThirdPartyPeer(IpsecVpnThirdPartyPeer in) { + return new Builder(); + } + } + + private IpsecVpnThirdPartyPeer() { + // For JAXB and builder use + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnTunnel.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnTunnel.java new file mode 100644 index 0000000000..25d4f628e8 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnTunnel.java @@ -0,0 +1,431 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementRef; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents details of an IPSec-VPN tunnel. + *

+ *

+ *

Java class for IpsecVpnTunnel complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="IpsecVpnTunnel">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element ref="{http://www.vmware.com/vcloud/v1.5}IpsecVpnPeer"/>
+ *         <element name="PeerIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="PeerNetworkAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="PeerNetworkMask" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="SharedSecret" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="EncryptionProtocol" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="Mtu" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="IsEnabled" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ *         <element name="IsOperational" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
+ *         <element name="ErrorDetails" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "IpsecVpnTunnel", propOrder = { + "name", + "description", + "ipsecVpnPeer", + "peerIpAddress", + "peerNetworkAddress", + "peerNetworkMask", + "sharedSecret", + "encryptionProtocol", + "mtu", + "isEnabled", + "isOperational", + "errorDetails" +}) +public class IpsecVpnTunnel + + +{ + @SuppressWarnings("unchecked") + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromIpsecVpnTunnel(this); + } + + public static class Builder { + + private String name; + private String description; + private IpsecVpnPeerType ipsecVpnPeer; + private String peerIpAddress; + private String peerNetworkAddress; + private String peerNetworkMask; + private String sharedSecret; + private String encryptionProtocol; + private int mtu; + private boolean isEnabled; + private Boolean isOperational; + private String errorDetails; + + /** + * @see IpsecVpnTunnel#getName() + */ + public Builder name(String name) { + this.name = name; + return this; + } + + /** + * @see IpsecVpnTunnel#getDescription() + */ + public Builder description(String description) { + this.description = description; + return this; + } + + /** + * @see IpsecVpnTunnel#getIpsecVpnPeer() + */ + public Builder ipsecVpnPeer(IpsecVpnPeerType ipsecVpnPeer) { + this.ipsecVpnPeer = ipsecVpnPeer; + return this; + } + + /** + * @see IpsecVpnTunnel#getPeerIpAddress() + */ + public Builder peerIpAddress(String peerIpAddress) { + this.peerIpAddress = peerIpAddress; + return this; + } + + /** + * @see IpsecVpnTunnel#getPeerNetworkAddress() + */ + public Builder peerNetworkAddress(String peerNetworkAddress) { + this.peerNetworkAddress = peerNetworkAddress; + return this; + } + + /** + * @see IpsecVpnTunnel#getPeerNetworkMask() + */ + public Builder peerNetworkMask(String peerNetworkMask) { + this.peerNetworkMask = peerNetworkMask; + return this; + } + + /** + * @see IpsecVpnTunnel#getSharedSecret() + */ + public Builder sharedSecret(String sharedSecret) { + this.sharedSecret = sharedSecret; + return this; + } + + /** + * @see IpsecVpnTunnel#getEncryptionProtocol() + */ + public Builder encryptionProtocol(String encryptionProtocol) { + this.encryptionProtocol = encryptionProtocol; + return this; + } + + /** + * @see IpsecVpnTunnel#getMtu() + */ + public Builder mtu(int mtu) { + this.mtu = mtu; + return this; + } + + /** + * @see IpsecVpnTunnel#isEnabled() + */ + public Builder isEnabled(boolean isEnabled) { + this.isEnabled = isEnabled; + return this; + } + + /** + * @see IpsecVpnTunnel#isOperational() + */ + public Builder isOperational(Boolean isOperational) { + this.isOperational = isOperational; + return this; + } + + /** + * @see IpsecVpnTunnel#getErrorDetails() + */ + public Builder errorDetails(String errorDetails) { + this.errorDetails = errorDetails; + return this; + } + + + public IpsecVpnTunnel build() { + return new IpsecVpnTunnel + (name, description, ipsecVpnPeer, peerIpAddress, peerNetworkAddress, peerNetworkMask, sharedSecret, + encryptionProtocol, mtu, isEnabled, isOperational, errorDetails); + } + + + public Builder fromIpsecVpnTunnel(IpsecVpnTunnel in) { + return name(in.getName()) + .description(in.getDescription()) + .peerIpAddress(in.getPeerIpAddress()) + .peerNetworkAddress(in.getPeerNetworkAddress()) + .peerNetworkMask(in.getPeerNetworkMask()) + .sharedSecret(in.getSharedSecret()) + .encryptionProtocol(in.getEncryptionProtocol()) + .mtu(in.getMtu()) + .isEnabled(in.isEnabled()) + .isOperational(in.isOperational()) + .errorDetails(in.getErrorDetails()); + } + } + + private IpsecVpnTunnel(String name, String description, IpsecVpnPeerType ipsecVpnPeer, String peerIpAddress, + String peerNetworkAddress, String peerNetworkMask, String sharedSecret, String encryptionProtocol, int mtu, boolean enabled, Boolean operational, String errorDetails) { + this.name = name; + this.description = description; + this.ipsecVpnPeer = ipsecVpnPeer; + this.peerIpAddress = peerIpAddress; + this.peerNetworkAddress = peerNetworkAddress; + this.peerNetworkMask = peerNetworkMask; + this.sharedSecret = sharedSecret; + this.encryptionProtocol = encryptionProtocol; + this.mtu = mtu; + isEnabled = enabled; + isOperational = operational; + this.errorDetails = errorDetails; + } + + private IpsecVpnTunnel() { + // For JAXB and builder use + } + + @XmlElement(name = "Name", required = true) + protected String name; + @XmlElement(name = "Description") + protected String description; + @XmlElementRef + protected IpsecVpnPeerType ipsecVpnPeer; + @XmlElement(name = "PeerIpAddress", required = true) + protected String peerIpAddress; + @XmlElement(name = "PeerNetworkAddress", required = true) + protected String peerNetworkAddress; + @XmlElement(name = "PeerNetworkMask", required = true) + protected String peerNetworkMask; + @XmlElement(name = "SharedSecret", required = true) + protected String sharedSecret; + @XmlElement(name = "EncryptionProtocol", required = true) + protected String encryptionProtocol; + @XmlElement(name = "Mtu") + protected int mtu; + @XmlElement(name = "IsEnabled") + protected boolean isEnabled; + @XmlElement(name = "IsOperational") + protected Boolean isOperational; + @XmlElement(name = "ErrorDetails") + protected String errorDetails; + + /** + * Gets the value of the name property. + * + * @return possible object is + * {@link String } + */ + public String getName() { + return name; + } + + /** + * Gets the value of the description property. + * + * @return possible object is + * {@link String } + */ + public String getDescription() { + return description; + } + + /** + * Details about the peer network. + */ + public IpsecVpnPeerType getIpsecVpnPeer() { + return ipsecVpnPeer; + } + + /** + * Gets the value of the peerIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getPeerIpAddress() { + return peerIpAddress; + } + + /** + * Gets the value of the peerNetworkAddress property. + * + * @return possible object is + * {@link String } + */ + public String getPeerNetworkAddress() { + return peerNetworkAddress; + } + + /** + * Gets the value of the peerNetworkMask property. + * + * @return possible object is + * {@link String } + */ + public String getPeerNetworkMask() { + return peerNetworkMask; + } + + /** + * Gets the value of the sharedSecret property. + * + * @return possible object is + * {@link String } + */ + public String getSharedSecret() { + return sharedSecret; + } + + /** + * Gets the value of the encryptionProtocol property. + * + * @return possible object is + * {@link String } + */ + public String getEncryptionProtocol() { + return encryptionProtocol; + } + + /** + * Gets the value of the mtu property. + */ + public int getMtu() { + return mtu; + } + + /** + * Gets the value of the isEnabled property. + */ + public boolean isEnabled() { + return isEnabled; + } + + /** + * Gets the value of the isOperational property. + * + * @return possible object is + * {@link Boolean } + */ + public Boolean isOperational() { + return isOperational; + } + + /** + * Gets the value of the errorDetails property. + * + * @return possible object is + * {@link String } + */ + public String getErrorDetails() { + return errorDetails; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + IpsecVpnTunnel that = IpsecVpnTunnel.class.cast(o); + return equal(name, that.name) && + equal(description, that.description) && + equal(peerIpAddress, that.peerIpAddress) && + equal(peerNetworkAddress, that.peerNetworkAddress) && + equal(peerNetworkMask, that.peerNetworkMask) && + equal(sharedSecret, that.sharedSecret) && + equal(encryptionProtocol, that.encryptionProtocol) && + equal(mtu, that.mtu) && + equal(isEnabled, that.isEnabled) && + equal(isOperational, that.isOperational) && + equal(errorDetails, that.errorDetails); + } + + @Override + public int hashCode() { + return Objects.hashCode(name, + description, + peerIpAddress, + peerNetworkAddress, + peerNetworkMask, + sharedSecret, + encryptionProtocol, + mtu, + isEnabled, + isOperational, + errorDetails); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("name", name) + .add("description", description) + .add("peerIpAddress", peerIpAddress) + .add("peerNetworkAddress", peerNetworkAddress) + .add("peerNetworkMask", peerNetworkMask) + .add("sharedSecret", sharedSecret) + .add("encryptionProtocol", encryptionProtocol) + .add("mtu", mtu) + .add("isEnabled", isEnabled) + .add("isOperational", isOperational) + .add("errorDetails", errorDetails).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnUnmanagedPeerType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnUnmanagedPeerType.java new file mode 100644 index 0000000000..ed92c5d415 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnUnmanagedPeerType.java @@ -0,0 +1,29 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.jclouds.vcloud.director.v1_5.domain; + +import javax.xml.bind.annotation.XmlSeeAlso; + +/** + */ +@XmlSeeAlso( + IpsecVpnThirdPartyPeer.class +) +public abstract class IpsecVpnUnmanagedPeerType> extends IpsecVpnPeerType { +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneBasicRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneBasicRule.java new file mode 100644 index 0000000000..7792d5f91f --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneBasicRule.java @@ -0,0 +1,185 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents the NAT basic rule for one to one mapping of internal + * and external IP addresses from a network. + *

+ *

+ *

Java class for NatOneToOneBasicRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatOneToOneBasicRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="MappingMode" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="ExternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="InternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "NatOneToOneBasicRule", propOrder = { + "mappingMode", + "externalIpAddress", + "internalIpAddress" +}) +public class NatOneToOneBasicRule { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromNatOneToOneBasicRule(this); + } + + public static class Builder { + + private String mappingMode; + private String externalIpAddress; + private String internalIpAddress; + + /** + * @see NatOneToOneBasicRule#getMappingMode() + */ + public Builder mappingMode(String mappingMode) { + this.mappingMode = mappingMode; + return this; + } + + /** + * @see NatOneToOneBasicRule#getExternalIpAddress() + */ + public Builder externalIpAddress(String externalIpAddress) { + this.externalIpAddress = externalIpAddress; + return this; + } + + /** + * @see NatOneToOneBasicRule#getInternalIpAddress() + */ + public Builder internalIpAddress(String internalIpAddress) { + this.internalIpAddress = internalIpAddress; + return this; + } + + public NatOneToOneBasicRule build() { + return new NatOneToOneBasicRule(mappingMode, externalIpAddress, internalIpAddress); + } + + public Builder fromNatOneToOneBasicRule(NatOneToOneBasicRule in) { + return mappingMode(in.getMappingMode()) + .externalIpAddress(in.getExternalIpAddress()) + .internalIpAddress(in.getInternalIpAddress()); + } + } + + private NatOneToOneBasicRule(String mappingMode, String externalIpAddress, String internalIpAddress) { + this.mappingMode = mappingMode; + this.externalIpAddress = externalIpAddress; + this.internalIpAddress = internalIpAddress; + } + + private NatOneToOneBasicRule() { + // For JAXB + } + + + @XmlElement(name = "MappingMode", required = true) + protected String mappingMode; + @XmlElement(name = "ExternalIpAddress", required = true) + protected String externalIpAddress; + @XmlElement(name = "InternalIpAddress", required = true) + protected String internalIpAddress; + + /** + * Gets the value of the mappingMode property. + * + * @return possible object is + * {@link String } + */ + public String getMappingMode() { + return mappingMode; + } + + /** + * Gets the value of the externalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getExternalIpAddress() { + return externalIpAddress; + } + + /** + * Gets the value of the internalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getInternalIpAddress() { + return internalIpAddress; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatOneToOneBasicRule that = NatOneToOneBasicRule.class.cast(o); + return equal(mappingMode, that.mappingMode) && + equal(externalIpAddress, that.externalIpAddress) && + equal(internalIpAddress, that.internalIpAddress); + } + + @Override + public int hashCode() { + return Objects.hashCode(mappingMode, + externalIpAddress, + internalIpAddress); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("mappingMode", mappingMode) + .add("externalIpAddress", externalIpAddress) + .add("internalIpAddress", internalIpAddress).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneVmRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneVmRule.java new file mode 100644 index 0000000000..2aeade3071 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatOneToOneVmRule.java @@ -0,0 +1,209 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents the NAT rule for one to one mapping of VM NIC and + * external IP addresses from a network. + *

+ *

+ *

Java class for NatOneToOneVmRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatOneToOneVmRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="MappingMode" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="ExternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType" minOccurs="0"/>
+ *         <element name="VAppScopedVmId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="VmNicId" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "NatOneToOneVmRule", propOrder = { + "mappingMode", + "externalIpAddress", + "vAppScopedVmId", + "vmNicId" +}) +public class NatOneToOneVmRule { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromNatOneToOneVmRule(this); + } + + public static class Builder { + + private String mappingMode; + private String externalIpAddress; + private String vAppScopedVmId; + private int vmNicId; + + /** + * @see NatOneToOneVmRule#getMappingMode() + */ + public Builder mappingMode(String mappingMode) { + this.mappingMode = mappingMode; + return this; + } + + /** + * @see NatOneToOneVmRule#getExternalIpAddress() + */ + public Builder externalIpAddress(String externalIpAddress) { + this.externalIpAddress = externalIpAddress; + return this; + } + + /** + * @see NatOneToOneVmRule#getVAppScopedVmId() + */ + public Builder vAppScopedVmId(String vAppScopedVmId) { + this.vAppScopedVmId = vAppScopedVmId; + return this; + } + + /** + * @see NatOneToOneVmRule#getVmNicId() + */ + public Builder vmNicId(int vmNicId) { + this.vmNicId = vmNicId; + return this; + } + + public NatOneToOneVmRule build() { + return new NatOneToOneVmRule(mappingMode, externalIpAddress, vAppScopedVmId, vmNicId); + } + + public Builder fromNatOneToOneVmRule(NatOneToOneVmRule in) { + return mappingMode(in.getMappingMode()) + .externalIpAddress(in.getExternalIpAddress()) + .vAppScopedVmId(in.getVAppScopedVmId()) + .vmNicId(in.getVmNicId()); + } + } + + private NatOneToOneVmRule(String mappingMode, String externalIpAddress, String vAppScopedVmId, int vmNicId) { + this.mappingMode = mappingMode; + this.externalIpAddress = externalIpAddress; + this.vAppScopedVmId = vAppScopedVmId; + this.vmNicId = vmNicId; + } + + private NatOneToOneVmRule() { + // For JAXB + } + + @XmlElement(name = "MappingMode", required = true) + protected String mappingMode; + @XmlElement(name = "ExternalIpAddress") + protected String externalIpAddress; + @XmlElement(name = "VAppScopedVmId", required = true) + protected String vAppScopedVmId; + @XmlElement(name = "VmNicId") + protected int vmNicId; + + /** + * Gets the value of the mappingMode property. + * + * @return possible object is + * {@link String } + */ + public String getMappingMode() { + return mappingMode; + } + + /** + * Gets the value of the externalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getExternalIpAddress() { + return externalIpAddress; + } + + /** + * Gets the value of the vAppScopedVmId property. + * + * @return possible object is + * {@link String } + */ + public String getVAppScopedVmId() { + return vAppScopedVmId; + } + + /** + * Gets the value of the vmNicId property. + */ + public int getVmNicId() { + return vmNicId; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatOneToOneVmRule that = NatOneToOneVmRule.class.cast(o); + return equal(mappingMode, that.mappingMode) && + equal(externalIpAddress, that.externalIpAddress) && + equal(vAppScopedVmId, that.vAppScopedVmId) && + equal(vmNicId, that.vmNicId); + } + + @Override + public int hashCode() { + return Objects.hashCode(mappingMode, + externalIpAddress, + vAppScopedVmId, + vmNicId); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("mappingMode", mappingMode) + .add("externalIpAddress", externalIpAddress) + .add("vAppScopedVmId", vAppScopedVmId) + .add("vmNicId", vmNicId).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatPortForwardingRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatPortForwardingRule.java new file mode 100644 index 0000000000..11f5afb9ed --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatPortForwardingRule.java @@ -0,0 +1,234 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents the NAT rule for port forwarding between internal + * IP/port and external IP/port. + *

+ *

+ *

Java class for NatPortForwardingRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatPortForwardingRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="ExternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="ExternalPort" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="InternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="InternalPort" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="Protocol" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "NatPortForwardingRule", propOrder = { + "externalIpAddress", + "externalPort", + "internalIpAddress", + "internalPort", + "protocol" +}) +public class NatPortForwardingRule { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromNatPortForwardingRule(this); + } + + public static class Builder { + + private String externalIpAddress; + private int externalPort; + private String internalIpAddress; + private int internalPort; + private String protocol; + + /** + * @see NatPortForwardingRule#getExternalIpAddress() + */ + public Builder externalIpAddress(String externalIpAddress) { + this.externalIpAddress = externalIpAddress; + return this; + } + + /** + * @see NatPortForwardingRule#getExternalPort() + */ + public Builder externalPort(int externalPort) { + this.externalPort = externalPort; + return this; + } + + /** + * @see NatPortForwardingRule#getInternalIpAddress() + */ + public Builder internalIpAddress(String internalIpAddress) { + this.internalIpAddress = internalIpAddress; + return this; + } + + /** + * @see NatPortForwardingRule#getInternalPort() + */ + public Builder internalPort(int internalPort) { + this.internalPort = internalPort; + return this; + } + + /** + * @see NatPortForwardingRule#getProtocol() + */ + public Builder protocol(String protocol) { + this.protocol = protocol; + return this; + } + + public NatPortForwardingRule build() { + return new NatPortForwardingRule(externalIpAddress, externalPort, internalIpAddress, internalPort, protocol); + } + + public Builder fromNatPortForwardingRule(NatPortForwardingRule in) { + return externalIpAddress(in.getExternalIpAddress()) + .externalPort(in.getExternalPort()) + .internalIpAddress(in.getInternalIpAddress()) + .internalPort(in.getInternalPort()) + .protocol(in.getProtocol()); + } + } + + private NatPortForwardingRule(String externalIpAddress, int externalPort, String internalIpAddress, int internalPort, String protocol) { + this.externalIpAddress = externalIpAddress; + this.externalPort = externalPort; + this.internalIpAddress = internalIpAddress; + this.internalPort = internalPort; + this.protocol = protocol; + } + + private NatPortForwardingRule() { + // For JAXB + } + + @XmlElement(name = "ExternalIpAddress", required = true) + protected String externalIpAddress; + @XmlElement(name = "ExternalPort") + protected int externalPort; + @XmlElement(name = "InternalIpAddress", required = true) + protected String internalIpAddress; + @XmlElement(name = "InternalPort") + protected int internalPort; + @XmlElement(name = "Protocol", required = true) + protected String protocol; + + /** + * Gets the value of the externalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getExternalIpAddress() { + return externalIpAddress; + } + + /** + * Gets the value of the externalPort property. + */ + public int getExternalPort() { + return externalPort; + } + + /** + * Gets the value of the internalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getInternalIpAddress() { + return internalIpAddress; + } + + /** + * Gets the value of the internalPort property. + */ + public int getInternalPort() { + return internalPort; + } + + /** + * Gets the value of the protocol property. + * + * @return possible object is + * {@link String } + */ + public String getProtocol() { + return protocol; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatPortForwardingRule that = NatPortForwardingRule.class.cast(o); + return equal(externalIpAddress, that.externalIpAddress) && + equal(externalPort, that.externalPort) && + equal(internalIpAddress, that.internalIpAddress) && + equal(internalPort, that.internalPort) && + equal(protocol, that.protocol); + } + + @Override + public int hashCode() { + return Objects.hashCode(externalIpAddress, + externalPort, + internalIpAddress, + internalPort, + protocol); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("externalIpAddress", externalIpAddress) + .add("externalPort", externalPort) + .add("internalIpAddress", internalIpAddress) + .add("internalPort", internalPort) + .add("protocol", protocol).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java new file mode 100644 index 0000000000..11deef91a7 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java @@ -0,0 +1,242 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents a NAT rule. + *

+ *

+ *

Java class for NatRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <choice>
+ *           <element name="OneToOneBasicRule" type="{http://www.vmware.com/vcloud/v1.5}NatOneToOneBasicRuleType"/>
+ *           <element name="OneToOneVmRule" type="{http://www.vmware.com/vcloud/v1.5}NatOneToOneVmRuleType"/>
+ *           <element name="PortForwardingRule" type="{http://www.vmware.com/vcloud/v1.5}NatPortForwardingRuleType"/>
+ *           <element name="VmRule" type="{http://www.vmware.com/vcloud/v1.5}NatVmRuleType"/>
+ *         </choice>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "NatRule", propOrder = { + "description", + "oneToOneBasicRule", + "oneToOneVmRule", + "portForwardingRule", + "vmRule" +}) +public class NatRule { + @SuppressWarnings("unchecked") + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromNatRule(this); + } + + public static class Builder { + private String description; + private NatOneToOneBasicRule oneToOneBasicRule; + private NatOneToOneVmRule oneToOneVmRule; + private NatPortForwardingRule portForwardingRule; + private NatVmRule vmRule; + + /** + * @see NatRule#getDescription() + */ + public Builder description(String description) { + this.description = description; + return this; + } + + /** + * @see NatRule#getOneToOneBasicRule() + */ + public Builder oneToOneBasicRule(NatOneToOneBasicRule oneToOneBasicRule) { + this.oneToOneBasicRule = oneToOneBasicRule; + return this; + } + + /** + * @see NatRule#getOneToOneVmRule() + */ + public Builder oneToOneVmRule(NatOneToOneVmRule oneToOneVmRule) { + this.oneToOneVmRule = oneToOneVmRule; + return this; + } + + /** + * @see NatRule#getPortForwardingRule() + */ + public Builder portForwardingRule(NatPortForwardingRule portForwardingRule) { + this.portForwardingRule = portForwardingRule; + return this; + } + + /** + * @see NatRule#getVmRule() + */ + public Builder vmRule(NatVmRule vmRule) { + this.vmRule = vmRule; + return this; + } + + public NatRule build() { + return new NatRule(description, oneToOneBasicRule, oneToOneVmRule, portForwardingRule, vmRule); + } + + public Builder fromNatRule(NatRule in) { + return description(in.getDescription()) + .oneToOneBasicRule(in.getOneToOneBasicRule()) + .oneToOneVmRule(in.getOneToOneVmRule()) + .portForwardingRule(in.getPortForwardingRule()) + .vmRule(in.getVmRule()); + } + } + + public NatRule(String description, NatOneToOneBasicRule oneToOneBasicRule, NatOneToOneVmRule oneToOneVmRule, + NatPortForwardingRule portForwardingRule, NatVmRule vmRule) { + this.description = description; + this.oneToOneBasicRule = oneToOneBasicRule; + this.oneToOneVmRule = oneToOneVmRule; + this.portForwardingRule = portForwardingRule; + this.vmRule = vmRule; + } + + private NatRule() { + // For JAXB and builder use + } + + @XmlElement(name = "Description") + protected String description; + @XmlElement(name = "OneToOneBasicRule") + protected NatOneToOneBasicRule oneToOneBasicRule; + @XmlElement(name = "OneToOneVmRule") + protected NatOneToOneVmRule oneToOneVmRule; + @XmlElement(name = "PortForwardingRule") + protected NatPortForwardingRule portForwardingRule; + @XmlElement(name = "VmRule") + protected NatVmRule vmRule; + + /** + * Gets the value of the description property. + * + * @return possible object is + * {@link String } + */ + public String getDescription() { + return description; + } + + /** + * Gets the value of the oneToOneBasicRule property. + * + * @return possible object is + * {@link NatOneToOneBasicRule } + */ + public NatOneToOneBasicRule getOneToOneBasicRule() { + return oneToOneBasicRule; + } + + + /** + * Gets the value of the oneToOneVmRule property. + * + * @return possible object is + * {@link NatOneToOneVmRule } + */ + public NatOneToOneVmRule getOneToOneVmRule() { + return oneToOneVmRule; + } + + /** + * Gets the value of the portForwardingRule property. + * + * @return possible object is + * {@link NatPortForwardingRule } + */ + public NatPortForwardingRule getPortForwardingRule() { + return portForwardingRule; + } + + /** + * Gets the value of the vmRule property. + * + * @return possible object is + * {@link NatVmRule } + */ + public NatVmRule getVmRule() { + return vmRule; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatRule that = NatRule.class.cast(o); + return equal(description, that.description) && + equal(oneToOneBasicRule, that.oneToOneBasicRule) && + equal(oneToOneVmRule, that.oneToOneVmRule) && + equal(portForwardingRule, that.portForwardingRule) && + equal(vmRule, that.vmRule); + } + + @Override + public int hashCode() { + return Objects.hashCode(description, + oneToOneBasicRule, + oneToOneVmRule, + portForwardingRule, + vmRule); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("description", description) + .add("oneToOneBasicRule", oneToOneBasicRule) + .add("oneToOneVmRule", oneToOneVmRule) + .add("portForwardingRule", portForwardingRule) + .add("vmRule", vmRule).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java new file mode 100644 index 0000000000..5b0c756a80 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatService.java @@ -0,0 +1,179 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; + +/** + * Represents a NAT network service. + *

+ *

+ *

Java class for NatService complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatService">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}NetworkServiceType">
+ *       <sequence>
+ *         <element name="NatType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="Policy" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ *         <element name="NatRule" type="{http://www.vmware.com/vcloud/v1.5}NatRuleType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlRootElement(name = "NatService") +@XmlType(propOrder = { + "natType", + "policy", + "natRules" +}) +public class NatService extends NetworkServiceType { + + public static Builder builder() { + return new Builder(); + } + + @Override + public Builder toBuilder() { + return new Builder().fromNatService(this); + } + + public static class Builder extends NetworkServiceType.Builder { + private String natType; + private String policy; + private Set natRules = Sets.newLinkedHashSet(); + + /** + * @see NatService#getNatType() + */ + public Builder natType(String natType) { + this.natType = natType; + return this; + } + + /** + * @see NatService#getPolicy() + */ + public Builder policy(String policy) { + this.policy = policy; + return this; + } + + /** + * @see NatService#getNatRules() + */ + public Builder natRules(Set natRules) { + this.natRules = checkNotNull(natRules, "natRules"); + return this; + } + + public NatService build() { + return new NatService(isEnabled, natType, policy, natRules); + } + + public Builder fromNatService(NatService in) { + return fromNetworkService(in).natType(in.getNatType()).policy(in.getPolicy()) + .natRules(in.getNatRules()); + } + + public Builder fromNetworkService(NetworkServiceType in) { + return Builder.class.cast(super.fromNetworkServiceType(in)); + } + + @Override + public Builder enabled(boolean enabled) { + this.isEnabled = enabled; + return this; + } + } + + @XmlElement(name = "NatType") + private String natType; + @XmlElement(name = "Policy") + private String policy; + @XmlElement(name = "NatRule") + private Set natRules = Sets.newLinkedHashSet(); + + private NatService(boolean enabled, String natType, String policy, Set natRules) { + super(enabled); + this.natType = natType; + this.policy = policy; + this.natRules = ImmutableSet.copyOf(natRules); + } + + private NatService() { + // for JAXB + } + + public String getNatType() { + return natType; + } + + public String getPolicy() { + return policy; + } + + public Set getNatRules() { + return Collections.unmodifiableSet(natRules); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatService that = NatService.class.cast(o); + return super.equals(that) + && equal(natType, that.natType) + && equal(natRules, that.natRules) + && equal(policy, that.policy); + } + + @Override + public int hashCode() { + return Objects.hashCode(super.hashCode(), natType, natRules, policy); + } + + @Override + protected Objects.ToStringHelper string() { + return super.string().add("natType", natType).add("natRules", natRules).add("policy", policy); + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java new file mode 100644 index 0000000000..06695b48ed --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java @@ -0,0 +1,262 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + * Represents the NAT rule for port forwarding between VM NIC/port + * and external IP/port. + *

+ *

+ *

Java class for NatVmRule complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="NatVmRule">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="ExternalIpAddress" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType" minOccurs="0"/>
+ *         <element name="ExternalPort" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="VAppScopedVmId" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="VmNicId" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="InternalPort" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="Protocol" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlType(name = "NatVmRule", propOrder = { + "externalIpAddress", + "externalPort", + "vAppScopedVmId", + "vmNicId", + "internalPort", + "protocol" +}) +public class NatVmRule { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromNatVmRule(this); + } + + public static class Builder { + + private String externalIpAddress; + private int externalPort; + private String vAppScopedVmId; + private int vmNicId; + private int internalPort; + private String protocol; + + /** + * @see NatVmRule#getExternalIpAddress() + */ + public Builder externalIpAddress(String externalIpAddress) { + this.externalIpAddress = externalIpAddress; + return this; + } + + /** + * @see NatVmRule#getExternalPort() + */ + public Builder externalPort(int externalPort) { + this.externalPort = externalPort; + return this; + } + + /** + * @see NatVmRule#getVAppScopedVmId() + */ + public Builder vAppScopedVmId(String vAppScopedVmId) { + this.vAppScopedVmId = vAppScopedVmId; + return this; + } + + /** + * @see NatVmRule#getVmNicId() + */ + public Builder vmNicId(int vmNicId) { + this.vmNicId = vmNicId; + return this; + } + + /** + * @see NatVmRule#getInternalPort() + */ + public Builder internalPort(int internalPort) { + this.internalPort = internalPort; + return this; + } + + /** + * @see NatVmRule#getProtocol() + */ + public Builder protocol(String protocol) { + this.protocol = protocol; + return this; + } + + public NatVmRule build() { + return new NatVmRule(externalIpAddress, externalPort, vAppScopedVmId, vmNicId, internalPort, protocol); + } + + public Builder fromNatVmRule(NatVmRule in) { + return externalIpAddress(in.getExternalIpAddress()) + .externalPort(in.getExternalPort()) + .vAppScopedVmId(in.getVAppScopedVmId()) + .vmNicId(in.getVmNicId()) + .internalPort(in.getInternalPort()) + .protocol(in.getProtocol()); + } + } + + private NatVmRule(String externalIpAddress, int externalPort, String vAppScopedVmId, int vmNicId, + int internalPort, String protocol) { + this.externalIpAddress = externalIpAddress; + this.externalPort = externalPort; + this.vAppScopedVmId = vAppScopedVmId; + this.vmNicId = vmNicId; + this.internalPort = internalPort; + this.protocol = protocol; + } + + private NatVmRule() { + // For JAXB and builder use + } + + + @XmlElement(name = "ExternalIpAddress") + protected String externalIpAddress; + @XmlElement(name = "ExternalPort") + protected int externalPort; + @XmlElement(name = "VAppScopedVmId", required = true) + protected String vAppScopedVmId; + @XmlElement(name = "VmNicId") + protected int vmNicId; + @XmlElement(name = "InternalPort") + protected int internalPort; + @XmlElement(name = "Protocol", required = true) + protected String protocol; + + /** + * Gets the value of the externalIpAddress property. + * + * @return possible object is + * {@link String } + */ + public String getExternalIpAddress() { + return externalIpAddress; + } + + /** + * Gets the value of the externalPort property. + */ + public int getExternalPort() { + return externalPort; + } + + /** + * Gets the value of the vAppScopedVmId property. + * + * @return possible object is + * {@link String } + */ + public String getVAppScopedVmId() { + return vAppScopedVmId; + } + + /** + * Gets the value of the vmNicId property. + */ + public int getVmNicId() { + return vmNicId; + } + + /** + * Gets the value of the internalPort property. + */ + public int getInternalPort() { + return internalPort; + } + + + /** + * Gets the value of the protocol property. + * + * @return possible object is + * {@link String } + */ + public String getProtocol() { + return protocol; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + NatVmRule that = NatVmRule.class.cast(o); + return equal(externalIpAddress, that.externalIpAddress) && + equal(externalPort, that.externalPort) && + equal(vAppScopedVmId, that.vAppScopedVmId) && + equal(vmNicId, that.vmNicId) && + equal(internalPort, that.internalPort) && + equal(protocol, that.protocol); + } + + @Override + public int hashCode() { + return Objects.hashCode(externalIpAddress, + externalPort, + vAppScopedVmId, + vmNicId, + internalPort, + protocol); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("externalIpAddress", externalIpAddress) + .add("externalPort", externalPort) + .add("vAppScopedVmId", vAppScopedVmId) + .add("vmNicId", vmNicId) + .add("internalPort", internalPort) + .add("protocol", protocol).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java similarity index 67% rename from labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkService.java rename to labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java index 56111c741d..58a814c506 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java @@ -21,52 +21,58 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlSeeAlso; import com.google.common.base.Objects; /** * Represents a network service * - * @author danikov + * @author Adam Lowe */ -@XmlRootElement(name = "NetworkService") -public class NetworkService { +@XmlSeeAlso({ + DhcpService.class, + IpsecVpnService.class, + FirewallService.class, + DhcpService.class, + StaticRoutingService.class, + NatService.class +}) +public class NetworkServiceType> { public static Builder builder() { return new Builder(); } public Builder toBuilder() { - return new Builder().fromNetworkService(this); + return new Builder().fromNetworkServiceType(this); } - public static class Builder { - - private boolean isEnabled; + public static class Builder> { + protected boolean isEnabled; /** - * @see NetworkService#isEnabled() + * @see NetworkServiceType#isEnabled() */ - public Builder enabled(boolean isEnabled) { + public Builder enabled(boolean isEnabled) { this.isEnabled = isEnabled; return this; } - public NetworkService build() { - return new NetworkService(isEnabled); + public NetworkServiceType build() { + return new NetworkServiceType(isEnabled); } - public Builder fromNetworkService(NetworkService in) { + public Builder fromNetworkServiceType(NetworkServiceType in) { return enabled(in.isEnabled()); } } - private NetworkService(boolean enabled) { + protected NetworkServiceType(boolean enabled) { isEnabled = enabled; } - private NetworkService() { + protected NetworkServiceType() { // For JAXB and builder use } @@ -86,7 +92,7 @@ public class NetworkService { return true; if (o == null || getClass() != o.getClass()) return false; - NetworkService that = NetworkService.class.cast(o); + NetworkServiceType that = NetworkServiceType.class.cast(o); return equal(isEnabled, that.isEnabled); } @@ -97,6 +103,10 @@ public class NetworkService { @Override public String toString() { - return Objects.toStringHelper("").add("isEnabled", isEnabled).toString(); + return string().toString(); + } + + protected Objects.ToStringHelper string() { + return Objects.toStringHelper("").add("isEnabled", isEnabled); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java new file mode 100644 index 0000000000..8429af77cc --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java @@ -0,0 +1,214 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; + + +/** + *

Java class for StaticRoute complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="StaticRoute">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}VCloudExtensibleType">
+ *       <sequence>
+ *         <element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="Network" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="NextHopIp" type="{http://www.vmware.com/vcloud/v1.5}IpAddressType"/>
+ *         <element name="Interface" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "StaticRoute", propOrder = { + "name", + "network", + "nextHopIp", + "_interface" +}) +public class StaticRoute { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromStaticRoute(this); + } + + public static class Builder { + private String name; + private String network; + private String nextHopIp; + private String _interface; + + /** + * @see StaticRoute#getName() + */ + public Builder name(String name) { + this.name = name; + return this; + } + + /** + * @see StaticRoute#getNetwork() + */ + public Builder network(String network) { + this.network = network; + return this; + } + + /** + * @see StaticRoute#getNextHopIp() + */ + public Builder nextHopIp(String nextHopIp) { + this.nextHopIp = nextHopIp; + return this; + } + + /** + * @see StaticRoute#getInterface() + */ + public Builder _interface(String _interface) { + this._interface = _interface; + return this; + } + + public StaticRoute build() { + return new StaticRoute(name, network, nextHopIp, _interface); + } + + public Builder fromStaticRoute(StaticRoute in) { + return name(in.getName()) + .network(in.getNetwork()) + .nextHopIp(in.getNextHopIp()) + ._interface(in.getInterface()); + } + } + + private StaticRoute(String name, String network, String nextHopIp, String _interface) { + this.name = checkNotNull(name, "name"); + this.network = checkNotNull(network, "network"); + this.nextHopIp = checkNotNull(nextHopIp, "nextHopIp"); + this._interface = checkNotNull(_interface, "interface"); + } + + private StaticRoute() { + // For JAXB and builder use + } + + private StaticRoute(String _interface) { + this._interface = _interface; + } + + @XmlElement(name = "Name", required = true) + protected String name; + @XmlElement(name = "Network", required = true) + protected String network; + @XmlElement(name = "NextHopIp", required = true) + protected String nextHopIp; + @XmlElement(name = "Interface", required = true) + protected String _interface; + + /** + * Gets the value of the name property. + * + * @return possible object is + * {@link String } + */ + public String getName() { + return name; + } + + /** + * Gets the value of the network property. + * + * @return possible object is + * {@link String } + */ + public String getNetwork() { + return network; + } + + /** + * Gets the value of the nextHopIp property. + * + * @return possible object is + * {@link String } + */ + public String getNextHopIp() { + return nextHopIp; + } + + /** + * Gets the value of the interface property. + * + * @return possible object is + * {@link String } + */ + public String getInterface() { + return _interface; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + StaticRoute that = StaticRoute.class.cast(o); + return equal(name, that.name) && + equal(network, that.network) && + equal(nextHopIp, that.nextHopIp) && + equal(_interface, that._interface); + } + + @Override + public int hashCode() { + return Objects.hashCode(name, + network, + nextHopIp, + _interface); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("name", name) + .add("network", network) + .add("nextHopIp", nextHopIp) + .add("_interface", _interface).toString(); + } +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java new file mode 100644 index 0000000000..a5648c2c82 --- /dev/null +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java @@ -0,0 +1,141 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. jclouds licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.jclouds.vcloud.director.v1_5.domain; + +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; + +import java.util.Collections; +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; + + +/** + * Represents Static Routing network service. + *

+ *

+ *

Java class for StaticRoutingService complex type. + *

+ *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <complexType name="StaticRoutingService">
+ *   <complexContent>
+ *     <extension base="{http://www.vmware.com/vcloud/v1.5}NetworkServiceType">
+ *       <sequence>
+ *         <element name="StaticRoute" type="{http://www.vmware.com/vcloud/v1.5}StaticRouteType" maxOccurs="unbounded" minOccurs="0"/>
+ *       </sequence>
+ *       <anyAttribute processContents='lax' namespace='##other'/>
+ *     </extension>
+ *   </complexContent>
+ * </complexType>
+ * 
+ */ +@XmlRootElement(name = "StaticRoutingService") +@XmlType(propOrder = { + "staticRoutes" +}) +public class StaticRoutingService extends NetworkServiceType { + + public static Builder builder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder().fromStaticRoutingService(this); + } + + public static class Builder extends NetworkServiceType.Builder { + + private List staticRoutes; + + /** + * @see StaticRoutingService#getStaticRoutes() + */ + public Builder staticRoutes(List staticRoutes) { + this.staticRoutes = checkNotNull(staticRoutes, "staticRoutes"); + return this; + } + + + public StaticRoutingService build() { + return new StaticRoutingService(isEnabled, staticRoutes); + } + + + @Override + public Builder fromNetworkServiceType(NetworkServiceType in) { + return Builder.class.cast(super.fromNetworkServiceType(in)); + } + + public Builder fromStaticRoutingService(StaticRoutingService in) { + return fromNetworkServiceType(in) + .staticRoutes(in.getStaticRoutes()); + } + } + + private StaticRoutingService(boolean enabled, List staticRoutes) { + super(enabled); + this.staticRoutes = ImmutableList.copyOf(staticRoutes); + } + + private StaticRoutingService() { + // For JAXB and builder use + } + + @XmlElement(name = "StaticRoute") + protected List staticRoutes = Lists.newArrayList(); + + /** + * Gets the value of the staticRoutes property. + */ + public List getStaticRoutes() { + return Collections.unmodifiableList(this.staticRoutes); + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + StaticRoutingService that = StaticRoutingService.class.cast(o); + return equal(staticRoutes, that.staticRoutes); + } + + @Override + public int hashCode() { + return Objects.hashCode(staticRoutes); + } + + @Override + public String toString() { + return Objects.toStringHelper("") + .add("staticRoutes", staticRoutes).toString(); + } + +} diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index 7ff348efc9..3c6752862f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.net.URI; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; @@ -88,7 +89,7 @@ public class VAppTemplate extends ResourceEntityType { public static class Builder extends ResourceEntityType.Builder { private Owner owner; private Set children = Sets.newLinkedHashSet(); - private Set sections = Sets.newLinkedHashSet(); + private Set> sections = Sets.newLinkedHashSet(); private String vAppScopedLocalId; private Boolean ovfDescriptorUploaded; private Boolean goldMaster; @@ -112,8 +113,8 @@ public class VAppTemplate extends ResourceEntityType { /** * @see VAppTemplate#getSections() */ - public Builder sections(Set sections) { - this.sections = sections; + public Builder sections(Set> sections) { + this.sections = checkNotNull(sections, "sections"); return this; } @@ -258,7 +259,7 @@ public class VAppTemplate extends ResourceEntityType { @XmlElementRef protected VAppTemplateChildren children = VAppTemplateChildren.builder().build(); @XmlElementRef - protected Set sections = Sets.newLinkedHashSet(); + protected Set> sections = Sets.newLinkedHashSet(); @XmlElement(name = "VAppScopedLocalId") protected String vAppScopedLocalId; @XmlAttribute @@ -267,7 +268,8 @@ public class VAppTemplate extends ResourceEntityType { protected Boolean goldMaster; private VAppTemplate(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, - String id, String name, FilesList files, Integer status, Owner owner, Set children, Set sections, String vAppScopedLocalId, Boolean ovfDescriptorUploaded, Boolean goldMaster) { + String id, String name, FilesList files, Integer status, Owner owner, Set children, + Set> sections, String vAppScopedLocalId, Boolean ovfDescriptorUploaded, Boolean goldMaster) { super(href, type, links, description, tasksInProgress, id, name, files, status); this.owner = owner; this.children = VAppTemplateChildren.builder().vms(children).build(); @@ -305,20 +307,6 @@ public class VAppTemplate extends ResourceEntityType { * Contains ovf sections for vApp template. * Gets the value of the section property. *

- *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the section property. - *

- *

- * For example, to add a new item, do as follows: - *

-    *    getSection().add(newItem);
-    * 
- *

- *

- *

* Objects of the following type(s) are allowed in the list * {@link JAXBElement }{@code <}{@link SectionType }{@code >} * {@link JAXBElement }{@code <}{@link VirtualHardwareSection }{@code >} @@ -339,8 +327,8 @@ public class VAppTemplate extends ResourceEntityType { * {@link JAXBElement }{@code <}{@link DiskSection }{@code >} * {@link JAXBElement }{@code <}{@link InstallSection }{@code >} */ - public Set getSections() { - return this.sections; + public Set> getSections() { + return Collections.unmodifiableSet(this.sections); } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java index 6a39be85c8..2d87f7b934 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplateChildren.java @@ -22,6 +22,7 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Collections; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -103,7 +104,7 @@ public class VAppTemplateChildren { * Gets the value of the vm property. */ public Set getVms() { - return this.vms; + return Collections.unmodifiableSet(this.vms); } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/SectionType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/SectionType.java index 30235d377b..144bee79a9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/SectionType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/SectionType.java @@ -89,7 +89,7 @@ public abstract class SectionType> { @XmlElement(name = "Info") private String info; @XmlAttribute(namespace = VCLOUD_OVF_NS) - private boolean required; + private Boolean required; protected SectionType(@Nullable String info, @Nullable Boolean required) { this.info = info; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java index a6e19b44c2..adfd70e28f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java @@ -73,7 +73,7 @@ public interface VAppTemplateAsyncClient { */ @POST @Consumes(TASK) - @Path("/consolidate") + @Path("/action/consolidate") @JAXBResponseParser ListenableFuture consolidateVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); @@ -113,7 +113,7 @@ public interface VAppTemplateAsyncClient { @Consumes(CUSTOMIZATION_SECTION) @Path("/customizationSection") @JAXBResponseParser - CustomizationSection getVAppTemplateCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** * @see VAppTemplateClient#editVAppTemplateCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.CustomizationSection) @@ -133,7 +133,7 @@ public interface VAppTemplateAsyncClient { @Consumes(GUEST_CUSTOMIZATION_SECTION) @Path("/guestCustomizationSection") @JAXBResponseParser - GuestCustomizationSection getVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** * @see VAppTemplateClient#editVAppTemplateGuestCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection) @@ -143,7 +143,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/guestCustomizationSection") @JAXBResponseParser - Task editVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture editVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) GuestCustomizationSection section); /** @@ -153,7 +153,7 @@ public interface VAppTemplateAsyncClient { @Consumes(LEASE_SETTINGS_SECTION) @Path("/leaseSettingsSection") @JAXBResponseParser - LeaseSettingsSection getVappTemplateLeaseSettingsSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVappTemplateLeaseSettingsSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** * @see VAppTemplateClient#editVappTemplateLeaseSettingsSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection) @@ -167,109 +167,122 @@ public interface VAppTemplateAsyncClient { @BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection); /** - * @see VAppTemplateClient#getMetadataForVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateMetadata(org.jclouds.vcloud.director.v1_5.domain.URISupplier) */ @GET @Consumes(METADATA) @Path("/metadata") @JAXBResponseParser - ListenableFuture getMetadataForVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); @PUT @Produces(METADATA) @Consumes(TASK) @Path("/metadata") @JAXBResponseParser - ListenableFuture editMetadataForVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture editVAppTemplateMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) Metadata metadata); /** - * @see VAppTemplateClient#editMetadataEntryForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String, org.jclouds.vcloud.director.v1_5.domain.MetadataEntry) + * @see VAppTemplateClient#getVAppTemplateMetadataValue(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String) */ @GET @Consumes(METADATA_ENTRY) @Path("/metadata/{key}") - ListenableFuture getMetadataEntryForVAppTemplateAndKey(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture getVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @PathParam("key") String key); /** - * @see VAppTemplateClient#editMetadataEntryForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String, org.jclouds.vcloud.director.v1_5.domain.MetadataEntry) + * @see VAppTemplateClient#editVAppTemplateMetadataValue(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String, org.jclouds.vcloud.director.v1_5.domain.MetadataValue) */ @PUT @Produces(METADATA_ENTRY) @Consumes(TASK) @Path("/metadata/{key}") - ListenableFuture editMetadataEntryForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture editVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @PathParam("key") String key, - @BinderParam(BindToXMLPayload.class) MetadataEntry entry); + @BinderParam(BindToXMLPayload.class) MetadataValue value); /** - * @see VAppTemplateClient#deleteMetadataEntryForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String) + * @see VAppTemplateClient#deleteVAppTemplateMetadataValue(URISupplier, String) */ @DELETE @Consumes(TASK) @Path("/metadata/{key}") - ListenableFuture deleteMetadataEntryForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture deleteVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @PathParam("key") String key); /** - * @see VAppTemplateClient#getNetworkConfigSectionForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkConfigSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) */ @GET @Consumes(NETWORK_CONFIG_SECTION) @Path("/networkConfigSection") - ListenableFuture getNetworkConfigSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + @JAXBResponseParser + ListenableFuture getVAppTemplateNetworkConfigSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** - * @see VAppTemplateClient#editNetworkConfigSectionForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection) + * @see VAppTemplateClient#editVAppTemplateNetworkConfigSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection) */ @PUT @Produces(NETWORK_CONFIG_SECTION) @Consumes(TASK) @Path("/networkConfigSection") - ListenableFuture editNetworkConfigSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture editVAppTemplateNetworkConfigSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) NetworkConfigSection section); /** - * @see VAppTemplateClient#getNetworkConnectionSectionForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkConnectionSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) */ @GET @Consumes(NETWORK_CONNECTION_SECTION) @Path("/networkConnectionSection") - ListenableFuture getNetworkConnectionSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + @JAXBResponseParser + ListenableFuture getVAppTemplateNetworkConnectionSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** - * @see VAppTemplateClient#editNetworkConnectionSectionForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection) + * @see VAppTemplateClient#editVAppTemplateNetworkConnectionSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection) */ @PUT @Produces(NETWORK_CONNECTION_SECTION) @Consumes(TASK) @Path("/networkConnectionSection") - ListenableFuture editNetworkConnectionSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture editVAppTemplateNetworkConnectionSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section); /** - * @see VAppTemplateClient#getNetworkSectionForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) */ @GET @Consumes(NETWORK_SECTION) @Path("/networkSection") - ListenableFuture getNetworkSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + @JAXBResponseParser + ListenableFuture getVAppTemplateNetworkSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + /** + * @see VAppTemplateClient#editVAppTemplateNetworkSection(URISupplier, NetworkSection) + */ @PUT @Produces(NETWORK_SECTION) @Consumes(TASK) @Path("/networkSection") - ListenableFuture editNetworkSectionForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + @JAXBResponseParser + ListenableFuture editVAppTemplateNetworkSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) NetworkSection section); /** - * @see VAppTemplateClient#getOvfForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateOvf(org.jclouds.vcloud.director.v1_5.domain.URISupplier) */ @GET @Consumes(ENVELOPE) @Path("/ovf") - ListenableFuture getOvfForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + @JAXBResponseParser + ListenableFuture getVAppTemplateOvf(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** * @see VAppTemplateClient#getOwnerOfVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) @@ -277,6 +290,7 @@ public interface VAppTemplateAsyncClient { @GET @Consumes(OWNER) @Path("/owner") + @JAXBResponseParser ListenableFuture getOwnerOfVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** @@ -285,6 +299,7 @@ public interface VAppTemplateAsyncClient { @GET @Consumes(PRODUCT_SECTION_LIST) @Path("/productSections") + @JAXBResponseParser ListenableFuture getProductSectionsForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); /** @@ -294,6 +309,7 @@ public interface VAppTemplateAsyncClient { @Produces(PRODUCT_SECTION_LIST) @Consumes(TASK) @Path("/productSections") + @JAXBResponseParser ListenableFuture editProductSectionsForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, @BinderParam(BindToXMLPayload.class) ProductSectionList sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java index 6e0408cf38..949c12aa4d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java @@ -146,7 +146,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the requested metadata */ - Metadata getMetadataForVappTemplate(URISupplier templateReference); + Metadata getVAppTemplateMetadata(URISupplier templateReference); /** * Merges the metadata for a vApp Template with the information provided. @@ -154,7 +154,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task editMetadataForVappTemplate(URISupplier templateReference, Metadata metadata); + Task editVAppTemplateMetadata(URISupplier templateReference, Metadata metadata); /** * Consolidates a VM @@ -162,7 +162,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - MetadataEntry getMetadataEntryForVAppTemplateAndKey(URISupplier templateReference, String key); + MetadataValue getVAppTemplateMetadataValue(URISupplier templateReference, String key); /** * Consolidates a VM @@ -170,7 +170,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task editMetadataEntryForVAppTemplate(URISupplier templateReference, String key, MetadataEntry entry); + Task editVAppTemplateMetadataValue(URISupplier templateReference, String key, MetadataValue value); /** * Consolidates a VM @@ -178,7 +178,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task deleteMetadataEntryForVAppTemplate(URISupplier templateReference, String key); + Task deleteVAppTemplateMetadataValue(URISupplier templateReference, String key); /** * Retrieves the network config section of a vApp or vApp template. @@ -186,7 +186,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the network config section requested */ - NetworkConfigSection getNetworkConfigSectionForVAppTemplate(URISupplier templateReference); + NetworkConfigSection getVAppTemplateNetworkConfigSection(URISupplier templateReference); /** * Modifies the network config section of a vApp or vApp template. @@ -194,7 +194,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task editNetworkConfigSectionForVAppTemplate(URISupplier templateReference, NetworkConfigSection section); + Task editVAppTemplateNetworkConfigSection(URISupplier templateReference, NetworkConfigSection section); /** * Retrieves the network connection section of a vApp or vApp template. @@ -202,7 +202,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the network connection section requested */ - NetworkConnectionSection getNetworkConnectionSectionForVAppTemplate(URISupplier templateReference); + NetworkConnectionSection getVAppTemplateNetworkConnectionSection(URISupplier templateReference); /** * Modifies the network connection section of a vApp or vApp template. @@ -210,7 +210,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task editNetworkConnectionSectionForVAppTemplate(URISupplier templateReference, NetworkConnectionSection section); + Task editVAppTemplateNetworkConnectionSection(URISupplier templateReference, NetworkConnectionSection section); /** * Retrieves the network section of a vApp or vApp template. @@ -218,7 +218,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the network section requested */ - NetworkSection getNetworkSectionForVAppTemplate(URISupplier templateReference); + NetworkSection getVAppTemplateNetworkSection(URISupplier templateReference); /** * Modifies the network section of a vApp or vApp template. @@ -226,7 +226,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Task editNetworkSectionForVAppTemplate(URISupplier templateReference, NetworkSection section); + Task editVAppTemplateNetworkSection(URISupplier templateReference, NetworkSection section); /** * Retrieves an OVF descriptor of a vApp template. @@ -234,7 +234,7 @@ public interface VAppTemplateClient { * @param templateReference the reference to the template * @return the task performing the action */ - Envelope getOvfForVAppTemplate(URISupplier templateReference); + Envelope getVAppTemplateOvf(URISupplier templateReference); /** * Retrieves vApp template owner. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index 409e34e873..697bfbb720 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -329,7 +329,7 @@ public class Checks { public static void checkNetworkFeatures(NetworkFeatures features) { // Check optional fields if (features.getNetworkServices() != null) { - for (NetworkService service : features.getNetworkServices()) { + for (NetworkServiceType service : features.getNetworkServices()) { checkNetworkService(service); } } @@ -352,7 +352,7 @@ public class Checks { checkIpAddress(routerInfo.getExternalIp()); } - public static void checkNetworkService(NetworkService service) { + public static void checkNetworkService(NetworkServiceType service) { // NOTE isEnabled cannot be checked } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java index 3cf590e9e5..99a833caa7 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java @@ -19,20 +19,19 @@ package org.jclouds.vcloud.director.v1_5.features; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotNull; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; +import java.net.URI; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Locale; import org.jclouds.vcloud.director.v1_5.domain.*; -import org.jclouds.vcloud.director.v1_5.domain.ovf.SectionType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; -import java.net.URI; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.fail; +import com.google.common.collect.ImmutableSet; /** * Tests the request/response behavior of {@link org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient} @@ -43,7 +42,7 @@ import static org.testng.Assert.fail; public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { public void testVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-xxxx-xxxx-xxxx-xxx"; + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -53,12 +52,13 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build(), new VcloudHttpRequestPrimer().apiCommand("DELETE", templateId).acceptMedia(TASK).httpRequestBuilder().build(), new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() - ).getVAppTemplateClient(); + ).getVAppTemplateClient(); assertNotNull(client); VAppTemplate template = client.getVAppTemplate(vappTemplateRef); + assertEquals(template, exampleTemplate()); - + Task task = client.editVAppTemplate(vappTemplateRef, template); assertNotNull(task); @@ -66,12 +66,198 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(task); } + public void testConsolidateVAppTemplate() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/consolidate").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + Task task = client.consolidateVappTemplate(vappTemplateRef); + assertNotNull(task); + } + + public void testDisableDownloadVAppTemplate() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/disableDownload").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + Task task = client.disableDownloadVappTemplate(vappTemplateRef); + assertNotNull(task); + } + + public void testEnableDownloadVAppTemplate() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + Task task = client.enableDownloadVappTemplate(vappTemplateRef); + assertNotNull(task); + } + + public void testRelocateVAppTemplate() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").xmlFilePayload("/vappTemplate/relocateParams.xml", RELOCATE_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + + Reference datastore = Reference.builder().href(URI.create("https://vcloud.example.com/api/admin/extension/datastore/607")).build(); + RelocateParams params = RelocateParams.builder().datastore(datastore).build(); + + Task task = client.relocateVappTemplate(vappTemplateRef, params); + assertNotNull(task); + } + + public void testCustomizationSection() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/customizationSection").acceptMedia(CUSTOMIZATION_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/customizationSection").xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + CustomizationSection section = client.getVAppTemplateCustomizationSection(vappTemplateRef); + + assertEquals(section, exampleCustomizationSection()); + + Task task = client.editVAppTemplateCustomizationSection(vappTemplateRef, section); + assertNotNull(task); + } + + public void testGuestCustomizationSection() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/guestCustomizationSection").acceptMedia(GUEST_CUSTOMIZATION_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/guestCustomizationSection.xml", GUEST_CUSTOMIZATION_SECTION).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/guestCustomizationSection").xmlFilePayload("/vapptemplate/guestCustomizationSection.xml", GUEST_CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + GuestCustomizationSection section = client.getVAppTemplateGuestCustomizationSection(vappTemplateRef); + + assertEquals(section, exampleGuestCustomizationSection()); + + Task task = client.editVAppTemplateGuestCustomizationSection(vappTemplateRef, section); + assertNotNull(task); + } + + public void testLeaseSettingsSection() throws ParseException { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/leaseSettingsSection").acceptMedia(LEASE_SETTINGS_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/leaseSettingsSection.xml", LEASE_SETTINGS_SECTION).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/leaseSettingsSection").xmlFilePayload("/vapptemplate/leaseSettingsSection.xml", LEASE_SETTINGS_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + LeaseSettingsSection section = client.getVappTemplateLeaseSettingsSection(vappTemplateRef); + + assertEquals(section, exampleLeaseSettingsSection()); + + Task task = client.editVappTemplateLeaseSettingsSection(vappTemplateRef, section); + assertNotNull(task); + } + + public void testVappTemplateMetadata() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata").acceptMedia(METADATA).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/metadata.xml", METADATA).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/metadata").xmlFilePayload("/vapptemplate/metadata.xml", METADATA).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + Metadata metadata = client.getVAppTemplateMetadata(vappTemplateRef); + + assertEquals(metadata, exampleMetadata()); + + Task task = client.editVAppTemplateMetadata(vappTemplateRef, metadata); + assertNotNull(task); + } + + public void testVappTemplateMetadataValue() { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata/12345").acceptMedia(METADATA_ENTRY).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/metadataValue.xml", METADATA_ENTRY).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/metadata/12345").xmlFilePayload("/vapptemplate/metadataValue.xml", METADATA_ENTRY).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("DELETE", templateId + "/metadata/12345").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + MetadataValue metadata = client.getVAppTemplateMetadataValue(vappTemplateRef, "12345"); + + assertEquals(metadata, exampleMetadataValue()); + + Task task = client.editVAppTemplateMetadataValue(vappTemplateRef, "12345", metadata); + assertNotNull(task); + + task = client.deleteVAppTemplateMetadataValue(vappTemplateRef, "12345"); + assertNotNull(task); + } + + public void testNetworkConfigSection() throws ParseException { + final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/networkConfigSection").acceptMedia(NETWORK_CONFIG_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).httpResponseBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/networkConfigSection").xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() + ).getVAppTemplateClient(); + + assertNotNull(client); + + NetworkConfigSection section = client.getVAppTemplateNetworkConfigSection(vappTemplateRef); + + assertEquals(section, exampleNetworkConfigSection()); + + Task task = client.editVAppTemplateNetworkConfigSection(vappTemplateRef, section); + assertNotNull(task); + } + private VAppTemplate exampleTemplate() { Link aLink = Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vdc/d16d333b-e3c0-4176-845d-a5ee6392df07")) .type("application/vnd.vmware.vcloud.vdc+xml").rel("up").build(); Link bLink = Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9")) .rel("remove").build(); - + Owner owner = Owner.builder().user(Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")).name("x@jclouds.org").type("application/vnd.vmware.admin.user+xml").build()).build(); LeaseSettingsSection leaseSettings = LeaseSettingsSection.builder().type("application/vnd.vmware.vcloud.leaseSettingsSection+xml") @@ -82,14 +268,14 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx .storageLeaseInSeconds(0) .required(false) .build(); - CustomizationSection customization = CustomizationSection.builder() + CustomizationSection customizationSection = CustomizationSection.builder() .type("application/vnd.vmware.vcloud.customizationSection+xml") .info("VApp template customization section") .customizeOnInstantiate(true) .href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/customizationSection/")) .required(false) .build(); - + return VAppTemplate.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9")) .links(ImmutableSet.of(aLink, bLink)) .children(ImmutableSet.of()) @@ -97,12 +283,130 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx .description("For testing") .id("urn:vcloud:vapptemplate:ef4415e6-d413-4cbb-9262-f9bbec5f2ea9") .name("ubuntu10") - .sections(ImmutableSet.of(leaseSettings, customization)) + .sections(ImmutableSet.of(leaseSettings, customizationSection)) .status(-1) .owner(owner) .ovfDescriptorUploaded(true) .goldMaster(false) .build(); + } + private CustomizationSection exampleCustomizationSection() { + return CustomizationSection.builder() + .links(ImmutableSet.of( + Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/customizationSection/")) + .type("application/vnd.vmware.vcloud.customizationSection+xml").rel("edit").build() + )) + .type("application/vnd.vmware.vcloud.customizationSection+xml") + .info("VApp template customization section") + .customizeOnInstantiate(true) + .href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/customizationSection/")) + .required(false) + .build(); + } + + private GuestCustomizationSection exampleGuestCustomizationSection() { + return GuestCustomizationSection.builder() + .links(ImmutableSet.of( + Link.builder().href(URI.create("http://vcloud.example.com/api/v1.5/vAppTemplate/vAppTemplate-12/guestCustomizationSection/")) + .type("application/vnd.vmware.vcloud.guestCustomizationSection+xml").rel("edit").build() + )) + .enabled(false) + .changeSid(false) + .virtualMachineId("4") + .joinDomainEnabled(false) + .useOrgSettings(false) + .adminPasswordEnabled(false) + .adminPasswordAuto(true) + .resetPasswordRequired(false) + .type("application/vnd.vmware.vcloud.guestCustomizationSection+xml") + .info("Specifies Guest OS Customization Settings") + .computerName("ubuntu10-x86") + .customizationScript("ls") + .href(URI.create("http://vcloud.example.com/api/v1.5/vAppTemplate/vAppTemplate-12/guestCustomizationSection/")) + .required(false) + .build(); + } + + private LeaseSettingsSection exampleLeaseSettingsSection() throws ParseException { + SimpleDateFormat iso8601SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US); + return LeaseSettingsSection.builder().type("application/vnd.vmware.vcloud.leaseSettingsSection+xml") + .href(URI.create("http://vcloud.example.com/api/v1.5/vAppTemplate/vAppTemplate-7/leaseSettingsSection/")) + .info("VApp lease settings") + .links(ImmutableSet.of(Link.builder().rel("edit").type("application/vnd.vmware.vcloud.leaseSettingsSection+xml") + .href(URI.create("http://vcloud.example.com/api/v1.5/vAppTemplate/vAppTemplate-7/leaseSettingsSection/")).build())) + .storageLeaseInSeconds(3600) + .deploymentLeaseInSeconds(3600) + // note adjusted to UTC + .deploymentLeaseExpiration(iso8601SimpleDateFormat.parse("2010-01-21T21:50:59.764")) + .required(false) + .build(); + } + + private Metadata exampleMetadata() { + return Metadata.builder() + .href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/metadata")) + .type("application/vnd.vmware.vcloud.metadata+xml") + .link(Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9")) + .type("application/vnd.vmware.vcloud.vAppTemplate+xml").rel("up").build()) + .entry(MetadataEntry.builder().key("key").value("value").build()).build(); + } + + private MetadataValue exampleMetadataValue() { + return MetadataValue.builder().value("some value").build(); + } + + private NetworkConfigSection exampleNetworkConfigSection() throws ParseException { + + FirewallService firewallService = + FirewallService.builder().firewallRules( + ImmutableSet.of( + FirewallRule.builder() + .isEnabled(true) + .description("FTP Rule") + .policy("allow") + .protocols(FirewallRuleProtocols.builder().tcp(true).build()) + .port(21) + .destinationIp("10.147.115.1") + .build(), + FirewallRule.builder() + .isEnabled(true) + .description("SSH Rule") + .policy("allow") + .protocols(FirewallRuleProtocols.builder().tcp(true).build()) + .port(22) + .destinationIp("10.147.115.1") + .build())).build(); + + NatService natService = NatService.builder().enabled(true).natType("ipTranslation").policy("allowTraffic") + .natRules(ImmutableSet.of(NatRule.builder().oneToOneVmRule( + NatOneToOneVmRule.builder().mappingMode("manual").externalIpAddress("64.100.10.1").vAppScopedVmId("20ea086f-1a6a-4fb2-8e2e-23372facf7de").vmNicId(0).build()).build() + )).build(); + + NetworkConfiguration networkConfiguration = NetworkConfiguration.builder().ipScope( + IpScope.builder() + .isInherited(false) + .gateway("10.147.56.253") + .netmask("255.255.255.0") + .dns1("10.147.115.1") + .dns2("10.147.115.2") + .dnsSuffix("example.com") + .ipRanges(IpRanges.builder().ipRange(IpRange.builder().startAddress("10.147.56.1").endAddress("10.147.56.1").build()).build()) + .build()) + .parentNetwork(Reference.builder().href(URI.create("http://vcloud.example.com/api/v1.0/network/54")).type("application/vnd.vmware.vcloud.network+xml").name("Internet").build()) + .fenceMode("natRouted") + .features(NetworkFeatures.builder().services(ImmutableSet.of(firewallService, natService)).build()) + .build(); + + return NetworkConfigSection.builder() + .info("Configuration parameters for logical networks") + .networkConfigs( + ImmutableSet.of( + VAppNetworkConfiguration.builder() + .networkName("vAppNetwork") + .configuration( + networkConfiguration + ).build() + )).build(); } } diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/customizationSection.xml b/labs/vcloud-director/src/test/resources/vapptemplate/customizationSection.xml new file mode 100644 index 0000000000..08569393a1 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/customizationSection.xml @@ -0,0 +1,11 @@ + + + VApp template customization section + true + + diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/guestCustomizationSection.xml b/labs/vcloud-director/src/test/resources/vapptemplate/guestCustomizationSection.xml new file mode 100644 index 0000000000..8b92156233 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/guestCustomizationSection.xml @@ -0,0 +1,19 @@ + + Specifies Guest OS Customization Settings + false + false + 4 + false + false + false + true + false + ls + ubuntu10-x86 + + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/leaseSettingsSection.xml b/labs/vcloud-director/src/test/resources/vapptemplate/leaseSettingsSection.xml new file mode 100644 index 0000000000..6cc1dc41d7 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/leaseSettingsSection.xml @@ -0,0 +1,12 @@ + + VApp lease settings + + 3600 + 3600 + 2010-01-21T21:50:59.764Z + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/metadata.xml b/labs/vcloud-director/src/test/resources/vapptemplate/metadata.xml new file mode 100644 index 0000000000..e97742462e --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/metadata.xml @@ -0,0 +1,8 @@ + + + + + key + value + + diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/metadataValue.xml b/labs/vcloud-director/src/test/resources/vapptemplate/metadataValue.xml new file mode 100644 index 0000000000..96d29f23b1 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/metadataValue.xml @@ -0,0 +1,4 @@ + + some value + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/networkConfigSection.xml b/labs/vcloud-director/src/test/resources/vapptemplate/networkConfigSection.xml new file mode 100644 index 0000000000..541a99ba3c --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/networkConfigSection.xml @@ -0,0 +1,64 @@ + + Configuration parameters for logical networks + + + + false + 10.147.56.253 + 255.255.255.0 + 10.147.115.1 + 10.147.115.2 + example.com + + + 10.147.56.1 + 10.147.56.1 + + + + + natRouted + + + true + + true + FTP Rule + allow + + true + + 21 + 10.147.115.1 + + + true + SSH Rule + allow + + true + + 22 + 10.147.115.1 + + + + true + ipTranslation + allowTraffic + + + manual + 64.100.10.1 + 20ea086f-1a6a-4fb2-8e2e-23372facf7de + 0 + + + + + + + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/relocateParams.xml b/labs/vcloud-director/src/test/resources/vapptemplate/relocateParams.xml new file mode 100644 index 0000000000..175bb37914 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/relocateParams.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file From 6b7f3f1fdd7489263c5fbe0275cb40b55363ba5c Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Mon, 5 Mar 2012 23:03:44 +0000 Subject: [PATCH 03/13] VCloud Director 1.5: Switching to URI params rather than using the references --- .../v1_5/features/CatalogAsyncClient.java | 17 +- .../director/v1_5/features/CatalogClient.java | 16 +- .../v1_5/features/MediaAsyncClient.java | 21 ++- .../director/v1_5/features/MediaClient.java | 10 +- .../v1_5/features/MetadataAsyncClient.java | 23 ++- .../v1_5/features/MetadataClient.java | 12 +- .../v1_5/features/NetworkAsyncClient.java | 8 +- .../director/v1_5/features/NetworkClient.java | 4 +- .../v1_5/features/OrgAsyncClient.java | 9 +- .../director/v1_5/features/OrgClient.java | 4 +- .../v1_5/features/TaskAsyncClient.java | 7 +- .../director/v1_5/features/TaskClient.java | 10 +- .../v1_5/features/UploadAsyncClient.java | 10 +- .../director/v1_5/features/UploadClient.java | 6 +- .../features/VAppTemplateAsyncClient.java | 148 ++++++++++-------- .../v1_5/features/VAppTemplateClient.java | 118 +++++++------- .../v1_5/features/VdcAsyncClient.java | 55 +++---- .../director/v1_5/features/VdcClient.java | 33 ++-- .../OrgReferenceToTaskListEndpoint.java | 4 +- .../v1_5/functions/ReferenceToEndpoint.java | 42 ----- .../v1_5/functions/URISupplierToEndpoint.java | 40 ----- .../director/v1_5/predicates/TaskSuccess.java | 12 +- .../features/CatalogClientExpectTest.java | 100 +++--------- .../v1_5/features/CatalogClientLiveTest.java | 56 +++---- .../v1_5/features/MediaClientExpectTest.java | 89 ++++------- .../v1_5/features/MediaClientLiveTest.java | 73 ++++----- .../features/NetworkClientExpectTest.java | 36 +---- .../v1_5/features/NetworkClientLiveTest.java | 24 +-- .../v1_5/features/OrgClientExpectTest.java | 25 +-- .../v1_5/features/OrgClientLiveTest.java | 18 ++- .../v1_5/features/TaskClientExpectTest.java | 17 +- .../v1_5/features/TaskClientLiveTest.java | 21 ++- .../VAppTemplateClientExpectTest.java | 62 ++++---- .../v1_5/features/VdcClientExpectTest.java | 88 +++-------- .../v1_5/features/VdcClientLiveTest.java | 103 +++++------- .../BaseVCloudDirectorClientLiveTest.java | 7 +- 36 files changed, 524 insertions(+), 804 deletions(-) delete mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ReferenceToEndpoint.java delete mode 100644 labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/URISupplierToEndpoint.java diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogAsyncClient.java index bebf5a87e5..55806b5130 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogAsyncClient.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -36,11 +38,8 @@ import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.CatalogItem; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -58,7 +57,7 @@ public interface CatalogAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getCatalog(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier catalogRef); + ListenableFuture getCatalog(@EndpointParam URI catalogUri); /** * Creates a catalog item in a catalog. @@ -69,7 +68,7 @@ public interface CatalogAsyncClient { @Produces(VCloudDirectorMediaType.CATALOG_ITEM) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture addCatalogItem(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier catalogRef, + ListenableFuture addCatalogItem(@EndpointParam URI catalogUri, @BinderParam(BindToXMLPayload.class) CatalogItem catalogItem); /** @@ -79,7 +78,7 @@ public interface CatalogAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getCatalogItem(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier catalogItemRef); + ListenableFuture getCatalogItem(@EndpointParam URI catalogItemUri); /** * Modifies a catalog item. @@ -89,7 +88,7 @@ public interface CatalogAsyncClient { @Produces(VCloudDirectorMediaType.CATALOG_ITEM) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture updateCatalogItem(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier catalogItemRef, + ListenableFuture updateCatalogItem(@EndpointParam URI catalogItemUri, @BinderParam(BindToXMLPayload.class) CatalogItem catalogItem); /** @@ -99,10 +98,10 @@ public interface CatalogAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture deleteCatalogItem(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier catalogItemRef); + ListenableFuture deleteCatalogItem(@EndpointParam URI catalogItemUri); /** - * @return asynchronous access to {@link Metadata.Writeable} features + * @return asynchronous access to {@link Writable} features */ @Delegate MetadataAsyncClient.Writable getMetadataClient(); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogClient.java index 9fc27f23de..8e52894b01 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/CatalogClient.java @@ -18,6 +18,7 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; @@ -25,7 +26,6 @@ import org.jclouds.rest.annotations.Delegate; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.CatalogItem; import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to {@link Catalog} objects. @@ -43,10 +43,10 @@ public interface CatalogClient { * GET /catalog/{id} * * - * @param catalogRef the reference for the catalog + * @param catalogUri the reference for the catalog * @return a catalog */ - Catalog getCatalog(URISupplier catalogRef); + Catalog getCatalog(URI catalogUri); /** * Creates a catalog item in a catalog. @@ -55,11 +55,11 @@ public interface CatalogClient { * POST /catalog/{id}/catalogItems * * - * @param catalogRef the reference for the catalog + * @param catalogUri the URI of the catalog * @param item the catalog item to create * @return the created catalog item */ - CatalogItem addCatalogItem(URISupplier catalogRef, CatalogItem item); + CatalogItem addCatalogItem(URI catalogUri, CatalogItem item); /** * Retrieves a catalog item. @@ -71,7 +71,7 @@ public interface CatalogClient { * @param catalogItemRef the reference for the catalog item * @return the catalog item */ - CatalogItem getCatalogItem(URISupplier catalogItemRef); + CatalogItem getCatalogItem(URI catalogItemRef); /** * Modifies a catalog item. @@ -84,7 +84,7 @@ public interface CatalogClient { * @param catalogItem the catalog item * @return the updated catalog item */ - CatalogItem updateCatalogItem(URISupplier catalogItemRef, CatalogItem catalogItem); + CatalogItem updateCatalogItem(URI catalogItemRef, CatalogItem catalogItem); /** * Deletes a catalog item. @@ -95,7 +95,7 @@ public interface CatalogClient { * * @param catalogItemRef the reference for the catalog item */ - void deleteCatalogItem(URISupplier catalogItemRef); + void deleteCatalogItem(URI catalogItemRef); /** * @return synchronous access to {@link Metadata.Writeable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java index 4c28188b6e..9f19cc5375 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaAsyncClient.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -37,10 +39,8 @@ import org.jclouds.vcloud.director.v1_5.domain.Media; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Owner; import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -52,43 +52,42 @@ import com.google.common.util.concurrent.ListenableFuture; public interface MediaAsyncClient { /** - * @see MediaClient#getMedia(URISupplier) + * @see MediaClient#getMedia(URI) */ @GET @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getMedia(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier mediaRef); + ListenableFuture getMedia(@EndpointParam URI uri); /** - * @see MediaClient#updateMedia(URISupplier, Media)) + * @see MediaClient#updateMedia(URI, Media)) */ @PUT @Consumes(VCloudDirectorMediaType.TASK) @Produces(VCloudDirectorMediaType.MEDIA) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture updateMedia(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier mediaRef, - @BinderParam(BindToXMLPayload.class) Media media); + ListenableFuture updateMedia(@EndpointParam URI uri, @BinderParam(BindToXMLPayload.class) Media media); /** - * @see MediaClient#deleteMedia(URISupplier)) + * @see MediaClient#deleteMedia(URI)) */ @DELETE @Consumes(VCloudDirectorMediaType.TASK) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture deleteMedia(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier mediaRef); + ListenableFuture deleteMedia(@EndpointParam URI uri); /** - * @see MediaClient#getOwner(URISupplier) + * @see MediaClient#getOwner(URI) */ @GET @Path("/owner") @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getOwner(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier mediaRef); + ListenableFuture getOwner(@EndpointParam URI uri); /** * @return asynchronous access to {@link Metadata.Writeable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java index 7f19e85b52..c779ac046f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MediaClient.java @@ -18,6 +18,7 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; @@ -26,7 +27,6 @@ import org.jclouds.vcloud.director.v1_5.domain.Media; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Owner; import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to Media. @@ -44,7 +44,7 @@ public interface MediaClient { * * @return the media or null if not found */ - Media getMedia(URISupplier mediaRef); + Media getMedia(URI mediaUri); /** * Updates the name/description of a media. @@ -52,19 +52,19 @@ public interface MediaClient { * @return a task. This operation is asynchronous and the user should monitor the returned * task status in order to check when it is completed. */ - Task updateMedia(URISupplier mediaRef, Media media); + Task updateMedia(URI mediaUri, Media media); /** * Deletes a media. */ - Task deleteMedia(URISupplier mediaRef); + Task deleteMedia(URI mediaUri); /** * Retrieves an owner. * * @return the owner or null if not found */ - Owner getOwner(URISupplier mediaRef); + Owner getOwner(URI mediaUri); /** * @return synchronous access to {@link Metadata.Writeable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java index 9164c40164..fe2dfb46c3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataAsyncClient.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; @@ -40,7 +42,6 @@ import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -60,24 +61,23 @@ public interface MetadataAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getMetadata(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier parentRef); + ListenableFuture getMetadata(@EndpointParam URI metaDataUri); /** - * @see MetadataClient.Readable#getMetadataEntry(URISupplier, String) + * @see MetadataClient.Readable#getMetadataValue(URI, String) */ @GET @Path("/metadata/{key}") @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getMetadataValue(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier parentRef , - @PathParam("key") String key); + ListenableFuture getMetadataValue(@EndpointParam URI metaDataUri, @PathParam("key") String key); } @RequestFilters(AddVCloudAuthorizationToRequest.class) public static interface Writable extends Readable { /** - * @see MetadataClient.Writable#mergeMetadata(URISupplier, Metadata)) + * @see MetadataClient.Writable#mergeMetadata(URI, Metadata)) */ @POST @Path("/metadata") @@ -85,12 +85,10 @@ public interface MetadataAsyncClient { @Produces(VCloudDirectorMediaType.METADATA) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture mergeMetadata(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier parentRef, - @BinderParam(BindToXMLPayload.class) Metadata metadata); - + ListenableFuture mergeMetadata(@EndpointParam URI metaDataUri, @BinderParam(BindToXMLPayload.class) Metadata metadata); /** - * @see MetadataClient.Writable#setMetadata(URISupplier, String, MetadataEntry)) + * @see MetadataClient.Writable#setMetadata(URI, String, MetadataEntry)) */ @PUT @Path("/metadata/{key}") @@ -98,7 +96,7 @@ public interface MetadataAsyncClient { @Produces(VCloudDirectorMediaType.METADATA_VALUE) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture setMetadata(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier metaDataRef, + ListenableFuture setMetadata(@EndpointParam URI metaDataUri, @PathParam("key") String key, @BinderParam(BindToXMLPayload.class) MetadataValue metadataValue); @@ -110,7 +108,6 @@ public interface MetadataAsyncClient { @Consumes(VCloudDirectorMediaType.TASK) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture deleteMetadataEntry(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier metaDataRef, - @PathParam("key") String key); + ListenableFuture deleteMetadataEntry(@EndpointParam URI metaDataUri, @PathParam("key") String key); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataClient.java index 5d31ff3b4e..e524985e3e 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/MetadataClient.java @@ -18,13 +18,13 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to Upload. @@ -42,14 +42,14 @@ public interface MetadataClient { * * @return a list of metadata */ - Metadata getMetadata(URISupplier parentRef); + Metadata getMetadata(URI uri); /** * Retrieves a metadata value * * @return the metadata value, or null if not found */ - MetadataValue getMetadataValue(URISupplier parentRef, String key); + MetadataValue getMetadataValue(URI uri, String key); } @Timeout(duration = 180, timeUnit = TimeUnit.SECONDS) @@ -60,7 +60,7 @@ public interface MetadataClient { * @return a task. This operation is asynchronous and the user should monitor the returned * task status in order to check when it is completed. */ - Task mergeMetadata(URISupplier parentRef, Metadata metadata); + Task mergeMetadata(URI uri, Metadata metadata); /** * Sets the metadata for the particular key for the media to the value provided. @@ -69,7 +69,7 @@ public interface MetadataClient { * @return a task. This operation is asynchronous and the user should monitor the returned * task status in order to check when it is completed. */ - Task setMetadata(URISupplier parentRef, String key, MetadataValue metadataValue); + Task setMetadata(URI uri, String key, MetadataValue metadataValue); /** * Deletes a metadata entry. @@ -77,6 +77,6 @@ public interface MetadataClient { * @return a task. This operation is asynchronous and the user should monitor the returned * task status in order to check when it is completed. */ - Task deleteMetadataEntry(URISupplier parentRef, String key); + Task deleteMetadataEntry(URI uri, String key); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkAsyncClient.java index c1121c7c50..a207290600 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkAsyncClient.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.GET; @@ -28,10 +30,8 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -44,13 +44,13 @@ import com.google.common.util.concurrent.ListenableFuture; public interface NetworkAsyncClient { /** - * @see NeworkClient#getNetwork(URISupplier) + * @see NetworkClient#getNetwork(URI) */ @GET @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getNetwork(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier networkRef); + ListenableFuture getNetwork(@EndpointParam URI networkUri); /** * @return asynchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkClient.java index 2cf8e2239a..8c29f509c9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/NetworkClient.java @@ -18,13 +18,13 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.rest.annotations.Delegate; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to Network. @@ -42,7 +42,7 @@ public interface NetworkClient { * * @return the network or null if not found */ - OrgNetwork getNetwork(URISupplier networkRef); + OrgNetwork getNetwork(URI networkUri); /** * @return synchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java index 57f647074c..fa1e7cda69 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgAsyncClient.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -30,11 +32,8 @@ import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Org; import org.jclouds.vcloud.director.v1_5.domain.OrgList; -import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -55,13 +54,13 @@ public interface OrgAsyncClient { ListenableFuture getOrgList(); /** - * @see OrgClient#getOrg(ReferenceType) + * @see OrgClient#getOrg(URI) */ @GET @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getOrg(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier orgRef); + ListenableFuture getOrg(@EndpointParam URI orgUri); /** * @return asynchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgClient.java index 1a954f3893..14ff6a632f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/OrgClient.java @@ -18,6 +18,7 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; @@ -25,7 +26,6 @@ import org.jclouds.rest.annotations.Delegate; import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.Org; import org.jclouds.vcloud.director.v1_5.domain.OrgList; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to Org. @@ -57,7 +57,7 @@ public interface OrgClient { * * @return the org or null if not found */ - Org getOrg(URISupplier orgRef); + Org getOrg(URI orgRef); /** * @return synchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java index d73d066d85..99a92fb54f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskAsyncClient.java @@ -35,7 +35,6 @@ import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.OrgReferenceToTaskListEndpoint; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -53,7 +52,7 @@ public interface TaskAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getTaskList(@EndpointParam(parser = OrgReferenceToTaskListEndpoint.class) URISupplier orgRef); + ListenableFuture getTaskList(@EndpointParam(parser = OrgReferenceToTaskListEndpoint.class) URI orgURI); /** * @see TaskClient#getTask(URI) @@ -62,7 +61,7 @@ public interface TaskAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getTask(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier taskRef); + ListenableFuture getTask(@EndpointParam URI taskURI); /** * @see TaskClient#cancelTask(URI) @@ -72,5 +71,5 @@ public interface TaskAsyncClient { @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture cancelTask(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier taskRef); + ListenableFuture cancelTask(@EndpointParam URI taskURI); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskClient.java index 58a6a05671..f05e885328 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/TaskClient.java @@ -18,12 +18,12 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.domain.TasksList; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to {@link Task} objects. @@ -41,10 +41,10 @@ public interface TaskClient { * GET /tasksList/{id} * * - * @param orgId the unique id for the organization + * @param orgURI the URI of the organization * @return a list of tasks */ - TasksList getTaskList(URISupplier orgRef); + TasksList getTaskList(URI orgURI); /** * Retrieves a task. @@ -55,7 +55,7 @@ public interface TaskClient { * * @return the task or null if not found */ - Task getTask(URISupplier taskUri); + Task getTask(URI taskUri); /** * Cancels a task. @@ -64,5 +64,5 @@ public interface TaskClient { * POST /task/{id}/action/cancel * */ - void cancelTask(URISupplier taskUri); + void cancelTask(URI taskUri); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java index 0f0062acb1..3921252314 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadAsyncClient.java @@ -19,12 +19,12 @@ package org.jclouds.vcloud.director.v1_5.features; import java.io.File; +import java.net.URI; import javax.ws.rs.PUT; import org.jclouds.rest.annotations.ExceptionParser; import org.jclouds.rest.annotations.RequestFilters; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; @@ -39,17 +39,17 @@ import com.google.common.util.concurrent.ListenableFuture; public interface UploadAsyncClient { // TODO: implement these operations correctly /** - * @see UploadClient#uploadFile(URISupplier, File) + * @see UploadClient#uploadFile(URI, File) */ @PUT @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture uploadFile(URISupplier target, File file); + ListenableFuture uploadFile(URI uri, File file); /** - * @see UploadClient#uploadBigFile(URISupplier, File) + * @see UploadClient#uploadBigFile(URI, File) */ @PUT @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture uploadBigFile(URISupplier target, File file); + ListenableFuture uploadBigFile(URI target, File file); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java index cc256c7123..147c7a415f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/UploadClient.java @@ -19,10 +19,10 @@ package org.jclouds.vcloud.director.v1_5.features; import java.io.File; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; /** * Provides synchronous access to Upload. @@ -38,11 +38,11 @@ public interface UploadClient { /** * Uploads a file. */ - void uploadFile(URISupplier target, File file); + void uploadFile(URI uri, File file); /** * Uploads a file using ranged PUTs. */ - void uploadBigFile(URISupplier target, File file); + void uploadBigFile(URI uri, File file); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java index adfd70e28f..701d62af68 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java @@ -20,18 +20,30 @@ package org.jclouds.vcloud.director.v1_5.features; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.*; -import com.google.common.util.concurrent.ListenableFuture; +import java.net.URI; + +import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.PUT; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; import org.jclouds.ovf.Envelope; import org.jclouds.ovf.NetworkSection; -import org.jclouds.rest.annotations.*; +import org.jclouds.rest.annotations.BinderParam; +import org.jclouds.rest.annotations.EndpointParam; +import org.jclouds.rest.annotations.ExceptionParser; +import org.jclouds.rest.annotations.JAXBResponseParser; +import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; -import org.jclouds.vcloud.director.v1_5.functions.ReferenceToEndpoint; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import javax.ws.rs.*; +import com.google.common.util.concurrent.ListenableFuture; /** * @author Adam Lowe @@ -41,276 +53,276 @@ import javax.ws.rs.*; public interface VAppTemplateAsyncClient { /** - * @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#getVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#getVAppTemplate(URI) */ @GET @Consumes(VAPP_TEMPLATE) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier reference); + ListenableFuture getVAppTemplate(@EndpointParam URI reference); /** - * @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#editVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.VAppTemplate) + * @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#editVAppTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.VAppTemplate) */ @PUT @Produces(VAPP_TEMPLATE) @Consumes(TASK) @JAXBResponseParser - ListenableFuture editVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier reference, + ListenableFuture editVAppTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) VAppTemplate template); /** - * @see VAppTemplateClient#deleteVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#deleteVappTemplate(URI) */ @DELETE @Consumes(TASK) @JAXBResponseParser - ListenableFuture deleteVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture deleteVappTemplate(@EndpointParam URI templateUri); /** - * @see VAppTemplateClient#consolidateVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#consolidateVappTemplate(URI) */ @POST @Consumes(TASK) @Path("/action/consolidate") @JAXBResponseParser - ListenableFuture consolidateVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture consolidateVappTemplate(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#disableDownloadVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#disableDownloadVappTemplate(URI) */ @POST @Consumes(TASK) @Path("/action/disableDownload") @JAXBResponseParser - ListenableFuture disableDownloadVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture disableDownloadVappTemplate(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#enableDownloadVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#enableDownloadVappTemplate(URI) */ @POST @Consumes(TASK) @Path("/action/enableDownload") @JAXBResponseParser - ListenableFuture enableDownloadVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture enableDownloadVappTemplate(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#relocateVappTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.RelocateParams) + * @see VAppTemplateClient#relocateVappTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.RelocateParams) */ @POST @Produces(RELOCATE_TEMPLATE) @Consumes(TASK) @Path("/action/relocate") @JAXBResponseParser - ListenableFuture relocateVappTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture relocateVappTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) RelocateParams params); /** - * @see VAppTemplateClient#getVAppTemplateCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateCustomizationSection(URI) */ @GET @Consumes(CUSTOMIZATION_SECTION) @Path("/customizationSection") @JAXBResponseParser - ListenableFuture getVAppTemplateCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateCustomizationSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVAppTemplateCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.CustomizationSection) + * @see VAppTemplateClient#editVAppTemplateCustomizationSection(URI, org.jclouds.vcloud.director.v1_5.domain.CustomizationSection) */ @PUT @Produces(CUSTOMIZATION_SECTION) @Consumes(TASK) @Path("/customizationSection") @JAXBResponseParser - ListenableFuture editVAppTemplateCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture editVAppTemplateCustomizationSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) CustomizationSection sectionType); /** - * @see VAppTemplateClient#getVAppTemplateGuestCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateGuestCustomizationSection(URI) */ @GET @Consumes(GUEST_CUSTOMIZATION_SECTION) @Path("/guestCustomizationSection") @JAXBResponseParser - ListenableFuture getVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVAppTemplateGuestCustomizationSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection) + * @see VAppTemplateClient#editVAppTemplateGuestCustomizationSection(URI, org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection) */ @PUT @Produces(GUEST_CUSTOMIZATION_SECTION) @Consumes(TASK) @Path("/guestCustomizationSection") @JAXBResponseParser - ListenableFuture editVAppTemplateGuestCustomizationSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @BinderParam(BindToXMLPayload.class) GuestCustomizationSection section); + ListenableFuture editVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI, + @BinderParam(BindToXMLPayload.class) GuestCustomizationSection section); /** - * @see VAppTemplateClient#getVappTemplateLeaseSettingsSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVappTemplateLeaseSettingsSection(URI) */ @GET @Consumes(LEASE_SETTINGS_SECTION) @Path("/leaseSettingsSection") @JAXBResponseParser - ListenableFuture getVappTemplateLeaseSettingsSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVappTemplateLeaseSettingsSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection) + * @see VAppTemplateClient#editVappTemplateLeaseSettingsSection(URI, org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection) */ @PUT @Produces(LEASE_SETTINGS_SECTION) @Consumes(TASK) @Path("/leaseSettingsSection") @JAXBResponseParser - ListenableFuture editVappTemplateLeaseSettingsSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture editVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection); /** - * @see VAppTemplateClient#getVAppTemplateMetadata(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateMetadata(URI) */ @GET @Consumes(METADATA) @Path("/metadata") @JAXBResponseParser - ListenableFuture getVAppTemplateMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateMetadata(@EndpointParam URI templateURI); @PUT @Produces(METADATA) @Consumes(TASK) @Path("/metadata") @JAXBResponseParser - ListenableFuture editVAppTemplateMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @BinderParam(BindToXMLPayload.class) Metadata metadata); + ListenableFuture editVAppTemplateMetadata(@EndpointParam URI templateURI, + @BinderParam(BindToXMLPayload.class) Metadata metadata); /** - * @see VAppTemplateClient#getVAppTemplateMetadataValue(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String) + * @see VAppTemplateClient#getVAppTemplateMetadataValue(URI, String) */ @GET @Consumes(METADATA_ENTRY) @Path("/metadata/{key}") @JAXBResponseParser - ListenableFuture getVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @PathParam("key") String key); + ListenableFuture getVAppTemplateMetadataValue(@EndpointParam URI templateURI, + @PathParam("key") String key); /** - * @see VAppTemplateClient#editVAppTemplateMetadataValue(org.jclouds.vcloud.director.v1_5.domain.URISupplier, String, org.jclouds.vcloud.director.v1_5.domain.MetadataValue) + * @see VAppTemplateClient#editVAppTemplateMetadataValue(URI, String, org.jclouds.vcloud.director.v1_5.domain.MetadataValue) */ @PUT @Produces(METADATA_ENTRY) @Consumes(TASK) @Path("/metadata/{key}") @JAXBResponseParser - ListenableFuture editVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @PathParam("key") String key, - @BinderParam(BindToXMLPayload.class) MetadataValue value); + ListenableFuture editVAppTemplateMetadataValue(@EndpointParam URI templateURI, + @PathParam("key") String key, + @BinderParam(BindToXMLPayload.class) MetadataValue value); /** - * @see VAppTemplateClient#deleteVAppTemplateMetadataValue(URISupplier, String) + * @see VAppTemplateClient#deleteVAppTemplateMetadataValue(URI, String) */ @DELETE @Consumes(TASK) @Path("/metadata/{key}") @JAXBResponseParser - ListenableFuture deleteVAppTemplateMetadataValue(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @PathParam("key") String key); + ListenableFuture deleteVAppTemplateMetadataValue(@EndpointParam URI templateURI, + @PathParam("key") String key); /** - * @see VAppTemplateClient#getVAppTemplateNetworkConfigSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkConfigSection(URI) */ @GET @Consumes(NETWORK_CONFIG_SECTION) @Path("/networkConfigSection") @JAXBResponseParser - ListenableFuture getVAppTemplateNetworkConfigSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVAppTemplateNetworkConfigSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection) + * @see VAppTemplateClient#editVAppTemplateNetworkConfigSection(URI, org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection) */ @PUT @Produces(NETWORK_CONFIG_SECTION) @Consumes(TASK) @Path("/networkConfigSection") @JAXBResponseParser - ListenableFuture editVAppTemplateNetworkConfigSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @BinderParam(BindToXMLPayload.class) NetworkConfigSection section); + ListenableFuture editVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI, + @BinderParam(BindToXMLPayload.class) NetworkConfigSection section); /** - * @see VAppTemplateClient#getVAppTemplateNetworkConnectionSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkConnectionSection(URI) */ @GET @Consumes(NETWORK_CONNECTION_SECTION) @Path("/networkConnectionSection") @JAXBResponseParser - ListenableFuture getVAppTemplateNetworkConnectionSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVAppTemplateNetworkConnectionSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection) + * @see VAppTemplateClient#editVAppTemplateNetworkConnectionSection(URI, org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection) */ @PUT @Produces(NETWORK_CONNECTION_SECTION) @Consumes(TASK) @Path("/networkConnectionSection") @JAXBResponseParser - ListenableFuture editVAppTemplateNetworkConnectionSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section); + ListenableFuture editVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI, + @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section); /** - * @see VAppTemplateClient#getVAppTemplateNetworkSection(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateNetworkSection(URI) */ @GET @Consumes(NETWORK_SECTION) @Path("/networkSection") @JAXBResponseParser - ListenableFuture getVAppTemplateNetworkSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateNetworkSection(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editVAppTemplateNetworkSection(URISupplier, NetworkSection) + * @see VAppTemplateClient#editVAppTemplateNetworkSection(URI, NetworkSection) */ @PUT @Produces(NETWORK_SECTION) @Consumes(TASK) @Path("/networkSection") @JAXBResponseParser - ListenableFuture editVAppTemplateNetworkSection(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, - @BinderParam(BindToXMLPayload.class) NetworkSection section); + ListenableFuture editVAppTemplateNetworkSection(@EndpointParam URI templateURI, + @BinderParam(BindToXMLPayload.class) NetworkSection section); /** - * @see VAppTemplateClient#getVAppTemplateOvf(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getVAppTemplateOvf(URI) */ @GET @Consumes(ENVELOPE) @Path("/ovf") @JAXBResponseParser - ListenableFuture getVAppTemplateOvf(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getVAppTemplateOvf(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#getOwnerOfVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getOwnerOfVAppTemplate(URI) */ @GET @Consumes(OWNER) @Path("/owner") @JAXBResponseParser - ListenableFuture getOwnerOfVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getOwnerOfVAppTemplate(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#getProductSectionsForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier) + * @see VAppTemplateClient#getProductSectionsForVAppTemplate(URI) */ @GET @Consumes(PRODUCT_SECTION_LIST) @Path("/productSections") @JAXBResponseParser - ListenableFuture getProductSectionsForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference); + ListenableFuture getProductSectionsForVAppTemplate(@EndpointParam URI templateURI); /** - * @see VAppTemplateClient#editProductSectionsForVAppTemplate(org.jclouds.vcloud.director.v1_5.domain.URISupplier, org.jclouds.vcloud.director.v1_5.domain.ProductSectionList) + * @see VAppTemplateClient#editProductSectionsForVAppTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.ProductSectionList) */ @PUT @Produces(PRODUCT_SECTION_LIST) @Consumes(TASK) @Path("/productSections") @JAXBResponseParser - ListenableFuture editProductSectionsForVAppTemplate(@EndpointParam(parser = ReferenceToEndpoint.class) URISupplier templateReference, + ListenableFuture editProductSectionsForVAppTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) ProductSectionList sections); // TODO shadowVms ? diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java index 949c12aa4d..618647e8d6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java @@ -18,14 +18,14 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; +import java.util.concurrent.TimeUnit; + import org.jclouds.concurrent.Timeout; import org.jclouds.ovf.Envelope; import org.jclouds.ovf.NetworkSection; import org.jclouds.vcloud.director.v1_5.domain.*; -import java.net.URI; -import java.util.concurrent.TimeUnit; - /** * Provides synchronous access to {@link org.jclouds.vcloud.director.v1_5.domain.VAppTemplate} objects. * @@ -38,227 +38,227 @@ public interface VAppTemplateClient { /** * Retrieves a vApp template (can be used also to retrieve a VM from a vApp Template). * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the requested template */ - VAppTemplate getVAppTemplate(URISupplier templateReference); + VAppTemplate getVAppTemplate(URI templateUri); /** * Modifies only the name/description of a vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @param template the template containing the new name and/or description * @return the task performing the action */ - Task editVAppTemplate(URISupplier templateReference, VAppTemplate template); + Task editVAppTemplate(URI templateUri, VAppTemplate template); /** * Deletes a vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task deleteVappTemplate(URISupplier templateReference); + Task deleteVappTemplate(URI templateUri); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task consolidateVappTemplate(URISupplier templateReference); + Task consolidateVappTemplate(URI templateUri); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task disableDownloadVappTemplate(URISupplier templateReference); + Task disableDownloadVappTemplate(URI templateUri); /** * Consolidates a VM, * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task enableDownloadVappTemplate(URISupplier templateReference); + Task enableDownloadVappTemplate(URI templateUri); /** * Relocates a virtual machine in a vApp template to a different datastore. * * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task relocateVappTemplate(URISupplier templateReference, RelocateParams params); + Task relocateVappTemplate(URI templateUri, RelocateParams params); /** * Retrieves the customization section of a vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - CustomizationSection getVAppTemplateCustomizationSection(URISupplier templateReference); + CustomizationSection getVAppTemplateCustomizationSection(URI templateUri); /** * Modifies the vApp template customization information. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateCustomizationSection(URISupplier templateReference, CustomizationSection sectionType); + Task editVAppTemplateCustomizationSection(URI templateUri, CustomizationSection sectionType); /** * Retrieves the Guest Customization Section of a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - GuestCustomizationSection getVAppTemplateGuestCustomizationSection(URISupplier templateReference); + GuestCustomizationSection getVAppTemplateGuestCustomizationSection(URI templateUri); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateGuestCustomizationSection(URISupplier templateReference, GuestCustomizationSection sectionType); + Task editVAppTemplateGuestCustomizationSection(URI templateUri, GuestCustomizationSection sectionType); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - LeaseSettingsSection getVappTemplateLeaseSettingsSection(URISupplier templateReference); + LeaseSettingsSection getVappTemplateLeaseSettingsSection(URI templateUri); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVappTemplateLeaseSettingsSection(URISupplier templateReference, LeaseSettingsSection settingsSection); + Task editVappTemplateLeaseSettingsSection(URI templateUri, LeaseSettingsSection settingsSection); /** * Retrieves the metadata associated with a vApp Template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the requested metadata */ - Metadata getVAppTemplateMetadata(URISupplier templateReference); + Metadata getVAppTemplateMetadata(URI templateUri); /** * Merges the metadata for a vApp Template with the information provided. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateMetadata(URISupplier templateReference, Metadata metadata); + Task editVAppTemplateMetadata(URI templateUri, Metadata metadata); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - MetadataValue getVAppTemplateMetadataValue(URISupplier templateReference, String key); + MetadataValue getVAppTemplateMetadataValue(URI templateUri, String key); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateMetadataValue(URISupplier templateReference, String key, MetadataValue value); + Task editVAppTemplateMetadataValue(URI templateUri, String key, MetadataValue value); /** * Consolidates a VM * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task deleteVAppTemplateMetadataValue(URISupplier templateReference, String key); + Task deleteVAppTemplateMetadataValue(URI templateUri, String key); /** * Retrieves the network config section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the network config section requested */ - NetworkConfigSection getVAppTemplateNetworkConfigSection(URISupplier templateReference); + NetworkConfigSection getVAppTemplateNetworkConfigSection(URI templateUri); /** * Modifies the network config section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateNetworkConfigSection(URISupplier templateReference, NetworkConfigSection section); + Task editVAppTemplateNetworkConfigSection(URI templateUri, NetworkConfigSection section); /** * Retrieves the network connection section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the network connection section requested */ - NetworkConnectionSection getVAppTemplateNetworkConnectionSection(URISupplier templateReference); + NetworkConnectionSection getVAppTemplateNetworkConnectionSection(URI templateUri); /** * Modifies the network connection section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateNetworkConnectionSection(URISupplier templateReference, NetworkConnectionSection section); + Task editVAppTemplateNetworkConnectionSection(URI templateUri, NetworkConnectionSection section); /** * Retrieves the network section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the network section requested */ - NetworkSection getVAppTemplateNetworkSection(URISupplier templateReference); + NetworkSection getVAppTemplateNetworkSection(URI templateUri); /** * Modifies the network section of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editVAppTemplateNetworkSection(URISupplier templateReference, NetworkSection section); + Task editVAppTemplateNetworkSection(URI templateUri, NetworkSection section); /** * Retrieves an OVF descriptor of a vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Envelope getVAppTemplateOvf(URISupplier templateReference); + Envelope getVAppTemplateOvf(URI templateUri); /** * Retrieves vApp template owner. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the owner of the vApp template */ - Owner getOwnerOfVAppTemplate(URISupplier templateReference); + Owner getOwnerOfVAppTemplate(URI templateUri); /** * Retrieves VAppTemplate/VM product sections * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the product sections */ - ProductSectionList getProductSectionsForVAppTemplate(URISupplier templateReference); + ProductSectionList getProductSectionsForVAppTemplate(URI templateUri); /** * Modifies the product sections of a vApp or vApp template. * - * @param templateReference the reference to the template + * @@param templateUri the URI of the template * @return the task performing the action */ - Task editProductSectionsForVAppTemplate(URISupplier templateReference, ProductSectionList sections); + Task editProductSectionsForVAppTemplate(URI templateUri, ProductSectionList sections); // TODO ShadowVms??? } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java index 100692c8cb..345baae334 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncClient.java @@ -17,7 +17,9 @@ * under the License. */ package org.jclouds.vcloud.director.v1_5.features; - + +import java.net.URI; + import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; @@ -32,22 +34,9 @@ import org.jclouds.rest.annotations.JAXBResponseParser; import org.jclouds.rest.annotations.RequestFilters; import org.jclouds.rest.binders.BindToXMLPayload; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppParamsType; -import org.jclouds.vcloud.director.v1_5.domain.Media; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; -import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.VApp; -import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; -import org.jclouds.vcloud.director.v1_5.domain.Vdc; +import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; -import org.jclouds.vcloud.director.v1_5.functions.URISupplierToEndpoint; import com.google.common.util.concurrent.ListenableFuture; @@ -60,16 +49,16 @@ import com.google.common.util.concurrent.ListenableFuture; public interface VdcAsyncClient { /** - * @see VdcClient#getVdc(URISupplier) + * @see VdcClient#getVdc(URI) */ @GET @Consumes @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture getVdc(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef); + ListenableFuture getVdc(@EndpointParam URI vdcURI); /** - * @see VdcClient#captureVApp(URISupplier, CaptureVAppParams) + * @see VdcClient#captureVApp(URI, CaptureVAppParams) */ @POST @Path("/action/captureVApp") @@ -77,11 +66,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture captureVApp(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture captureVApp(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) CaptureVAppParams params); /** - * @see VdcClient#cloneMedia(URISupplier, CloneMediaParams) + * @see VdcClient#cloneMedia(URI, CloneMediaParams) */ @POST @Path("/action/cloneMedia") @@ -89,11 +78,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.CLONE_MEDIA_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture cloneMedia(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture cloneMedia(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) CloneMediaParams params); /** - * @see VdcClient#cloneVApp(URISupplier, CloneVAppParams) + * @see VdcClient#cloneVApp(URI, CloneVAppParams) */ @POST @Path("/action/cloneVApp") @@ -101,11 +90,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.CLONE_V_APP_PARAMS) //TODO fix these etc. @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture cloneVApp(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture cloneVApp(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) CloneVAppParams params); /** - * @see VdcClient#cloneVAppTemplate(URISupplier, CloneVAppTemplateParams) + * @see VdcClient#cloneVAppTemplate(URI, CloneVAppTemplateParams) */ @POST @Path("/action/cloneVAppTemplate") @@ -113,11 +102,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.CLONE_V_APP_TEMPLATE_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture cloneVAppTemplate(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture cloneVAppTemplate(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) CloneVAppTemplateParams params); /** - * @see VdcClient#composeVApp(URISupplier, ComposeVAppParams) + * @see VdcClient#composeVApp(URI, ComposeVAppParams) */ @POST @Path("/action/composeVApp") @@ -125,11 +114,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture composeVApp(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture composeVApp(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) ComposeVAppParams params); /** - * @see VdcClient#instantiateVApp(URISupplier, InstantiateVAppParamsType) + * @see VdcClient#instantiateVApp(URI, InstantiateVAppParamsType) */ @POST @Path("/action/instantiateVApp") @@ -137,11 +126,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.INSTANTIATE_VAPP_TEMPLATE_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture instantiateVApp(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture instantiateVApp(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) InstantiateVAppParamsType params); /** - * @see VdcClient#uploadVAppTemplate(URISupplier, UploadVAppTemplateParams) + * @see VdcClient#uploadVAppTemplate(URI, UploadVAppTemplateParams) */ @POST @Path("/action/uploadVAppTemplate") @@ -149,11 +138,11 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.UPLOAD_VAPP_TEMPLATE_PARAMS) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture uploadVAppTemplate(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture uploadVAppTemplate(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) UploadVAppTemplateParams params); /** - * @see VdcClient#createMedia(URISupplier, Media) + * @see VdcClient#createMedia(URI, Media) */ @POST @Path("/media") @@ -161,7 +150,7 @@ public interface VdcAsyncClient { @Produces(VCloudDirectorMediaType.MEDIA) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) - ListenableFuture createMedia(@EndpointParam(parser = URISupplierToEndpoint.class) URISupplier vdcRef, + ListenableFuture createMedia(@EndpointParam URI vdcURI, @BinderParam(BindToXMLPayload.class) Media media); /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java index 7a20e21fe0..c0bab55cd6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcClient.java @@ -18,23 +18,12 @@ */ package org.jclouds.vcloud.director.v1_5.features; +import java.net.URI; import java.util.concurrent.TimeUnit; import org.jclouds.concurrent.Timeout; import org.jclouds.rest.annotations.Delegate; -import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppParamsType; -import org.jclouds.vcloud.director.v1_5.domain.Media; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; -import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.VApp; -import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; -import org.jclouds.vcloud.director.v1_5.domain.Vdc; +import org.jclouds.vcloud.director.v1_5.domain.*; /** * Provides synchronous access to a vDC. @@ -52,7 +41,7 @@ public interface VdcClient { * * @return the vdc or null if not found */ - Vdc getVdc(URISupplier vdcRef); + Vdc getVdc(URI vdcUri); /** * Captures a vApp into vApp template. @@ -61,7 +50,7 @@ public interface VdcClient { * @return a VApp resource which will contain a task. * The user should should wait for this task to finish to be able to use the vApp. */ - VAppTemplate captureVApp(URISupplier vdcRef, CaptureVAppParams params); + VAppTemplate captureVApp(URI vdcUri, CaptureVAppParams params); /** * Clones a media into new one. @@ -70,7 +59,7 @@ public interface VdcClient { * @return a Media resource which will contain a task. * The user should monitor the contained task status in order to check when it is completed. */ - Media cloneMedia(URISupplier vdcRef, CloneMediaParams params); + Media cloneMedia(URI vdcUri, CloneMediaParams params); /** * Clones a vApp into new one. The status of vApp will be in UNRESOLVED(0) until the clone task is finished. @@ -78,7 +67,7 @@ public interface VdcClient { * @return a VApp resource which will contain a task. * The user should should wait for this task to finish to be able to use the vApp. */ - VApp cloneVApp(URISupplier vdcRef, CloneVAppParams params); + VApp cloneVApp(URI vdcUri, CloneVAppParams params); /** * Clones a vApp template into new one. @@ -87,7 +76,7 @@ public interface VdcClient { * @return a VAppTemplate resource which will contain a task. * The user should should wait for this task to finish to be able to use the VAppTemplate. */ - VAppTemplate cloneVAppTemplate(URISupplier vdcRef, CloneVAppTemplateParams params); + VAppTemplate cloneVAppTemplate(URI vdcUri, CloneVAppTemplateParams params); /** * Composes a new vApp using VMs from other vApps or vApp templates. The vCloud API supports @@ -111,7 +100,7 @@ public interface VdcClient { * @return a VApp resource which will contain a task. * The user should should wait for this task to finish to be able to use the vApp. */ - VApp composeVApp(URISupplier vdcRef, ComposeVAppParams params); + VApp composeVApp(URI vdcUri, ComposeVAppParams params); /** * Instantiate a vApp template into a new vApp. @@ -120,7 +109,7 @@ public interface VdcClient { * @return a VApp resource which will contain a task. * The user should should wait for this task to finish to be able to use the vApp. */ - VApp instantiateVApp(URISupplier vdcRef, InstantiateVAppParamsType params); + VApp instantiateVApp(URI vdcUri, InstantiateVAppParamsType params); /** * Uploading vApp template to a vDC. The operation is separate on several steps: @@ -134,14 +123,14 @@ public interface VdcClient { * @return a VAppTemplate resource which will contain a task. * The user should should wait for this task to finish to be able to use the VAppTemplate. */ - VAppTemplate uploadVAppTemplate(URISupplier vdcRef, UploadVAppTemplateParams params); + VAppTemplate uploadVAppTemplate(URI vdcUri, UploadVAppTemplateParams params); /** * Creates a media (and present upload link for the floppy/iso file). * * @return The response will return a link to transfer site to be able to continue with uploading the media. */ - Media createMedia(URISupplier vdcRef, Media media); + Media createMedia(URI vdcUri, Media media); /** * @return synchronous access to {@link Metadata.Readable} features diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java index 7dceb1dc56..a46f945082 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/OrgReferenceToTaskListEndpoint.java @@ -47,8 +47,8 @@ public class OrgReferenceToTaskListEndpoint implements Function { @Override public URI apply(Object input) { Preconditions.checkNotNull(input); - Preconditions.checkArgument(input instanceof URISupplier); - URISupplier reference = (URISupplier) input; + Preconditions.checkArgument(input instanceof URI); + URI reference = (URI) input; Org org = client.getOrg(reference); for (Link link : org.getLinks()) { if (link.getType().equals(VCloudDirectorMediaType.TASKS_LIST)) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ReferenceToEndpoint.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ReferenceToEndpoint.java deleted file mode 100644 index 947b848455..0000000000 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ReferenceToEndpoint.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Licensed to jclouds, Inc. (jclouds) under one or more - * contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. jclouds licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.jclouds.vcloud.director.v1_5.functions; - -import java.net.URI; - -import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; - -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; - -/** - * @author grkvlt@apache.org - */ -@Deprecated -public class ReferenceToEndpoint implements Function { - - @Override - public URI apply(Object input) { - Preconditions.checkNotNull(input); - Preconditions.checkArgument(input instanceof URISupplier); - URISupplier reference = (URISupplier) input; - return reference.getURI(); - }; -} \ No newline at end of file diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/URISupplierToEndpoint.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/URISupplierToEndpoint.java deleted file mode 100644 index 750b007f7a..0000000000 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/URISupplierToEndpoint.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * Licensed to jclouds, Inc. (jclouds) under one or more - * contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. jclouds licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.jclouds.vcloud.director.v1_5.functions; - -import java.net.URI; - -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; - -import com.google.common.base.Function; -import com.google.common.base.Preconditions; - -/** - * @author danikov - */ -public class URISupplierToEndpoint implements Function { - - @Override - public URI apply(Object input) { - Preconditions.checkNotNull(input); - Preconditions.checkArgument(input instanceof URISupplier); - URISupplier provider = (URISupplier) input; - return provider.getURI(); - }; -} \ No newline at end of file diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java index 0a344ca8f2..1cd2a9d804 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/predicates/TaskSuccess.java @@ -18,6 +18,8 @@ */ package org.jclouds.vcloud.director.v1_5.predicates; +import java.net.URI; + import javax.annotation.Resource; import javax.inject.Inject; import javax.inject.Singleton; @@ -36,7 +38,7 @@ import com.google.common.base.Predicate; * @author grkvlt@apache.org */ @Singleton -public class TaskSuccess implements Predicate { +public class TaskSuccess implements Predicate { private final TaskClient taskClient; @@ -50,10 +52,12 @@ public class TaskSuccess implements Predicate { /** @see Predicate#apply(Object) */ @Override - public boolean apply(URISupplier taskRef) { - logger.trace("looking for status on task %s", taskRef); + public boolean apply(Task task) { + logger.trace("looking for status on task %s", task); - Task task = taskClient.getTask(taskRef); + // TODO shouldn't we see if it's already done before getting it from API server? + task = taskClient.getTask(task.getURI()); + // perhaps task isn't available, yet if (task == null) return false; logger.trace("%s: looking for status %s: currently: %s", task, Task.Status.SUCCESS, task.getStatus()); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientExpectTest.java index 2df331d169..8ec7da7646 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientExpectTest.java @@ -69,13 +69,8 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT Catalog expected = catalog(); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build(); - - assertEquals(client.getCatalogClient().getCatalog(catalogRef), expected); + URI catalogURI = URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4"); + assertEquals(client.getCatalogClient().getCatalog(catalogURI), expected); } @Test @@ -97,11 +92,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build(); + URI catalogURI = URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4"); CatalogItem newItem = CatalogItem.builder() .name("newCatalogItem") @@ -111,7 +102,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT CatalogItem expected = createdCatalogItem(); - assertEquals(client.getCatalogClient().addCatalogItem(catalogRef, newItem), expected); + assertEquals(client.getCatalogClient().addCatalogItem(catalogURI, newItem), expected); } @Test @@ -132,11 +123,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogRequest, catalogResponse); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build(); + URI catalogURI = URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4"); Metadata expected = Metadata.builder() .type("application/vnd.vmware.vcloud.metadata+xml") @@ -149,7 +136,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT .entries(ImmutableSet.of(metadataEntry())) .build(); - assertEquals(client.getCatalogClient().getMetadataClient().getMetadata(catalogRef), expected); + assertEquals(client.getCatalogClient().getMetadataClient().getMetadata(catalogURI), expected); } @Test @@ -170,15 +157,11 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogRequest, catalogResponse); - Reference catalogRef = Reference.builder() - .type("application/vnd.vmware.vcloud.catalog+xml") - .name("QunyingTestCatalog") - .href(URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) - .build(); + URI catalogURI = URI.create(endpoint + "/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4"); MetadataValue expected = metadataValue(); - assertEquals(client.getCatalogClient().getMetadataClient().getMetadataValue(catalogRef, "KEY"), expected); + assertEquals(client.getCatalogClient().getMetadataClient().getMetadataValue(catalogURI, "KEY"), expected); } @Test @@ -199,15 +182,11 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); CatalogItem expected = catalogItem(); - assertEquals(client.getCatalogClient().getCatalogItem(catalogItemReference), expected); + assertEquals(client.getCatalogClient().getCatalogItem(catalogItemURI), expected); } @Test @@ -229,15 +208,10 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); - + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); CatalogItem expected = catalogItem(); - assertEquals(client.getCatalogClient().updateCatalogItem(catalogItemReference, expected), expected); + assertEquals(client.getCatalogClient().updateCatalogItem(catalogItemURI, expected), expected); } @Test @@ -257,13 +231,9 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); - client.getCatalogClient().deleteCatalogItem(catalogItemReference); + client.getCatalogClient().deleteCatalogItem(catalogItemURI); } @Test @@ -284,11 +254,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); Metadata expected = Metadata.builder() .type("application/vnd.vmware.vcloud.metadata+xml") @@ -301,7 +267,7 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT .entries(ImmutableSet.of(itemMetadataEntry())) .build(); - assertEquals(client.getCatalogClient().getMetadataClient().getMetadata(catalogItemReference), expected); + assertEquals(client.getCatalogClient().getMetadataClient().getMetadata(catalogItemURI), expected); } @Test @@ -323,17 +289,13 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); Metadata metadata = Metadata.builder().entry(MetadataEntry.builder().entry("KEY", "VALUE").build()).build(); Task expected = mergeMetadataTask(); - assertEquals(client.getCatalogClient().getMetadataClient().mergeMetadata(catalogItemReference, metadata), expected); + assertEquals(client.getCatalogClient().getMetadataClient().mergeMetadata(catalogItemURI, metadata), expected); } @Test @@ -353,16 +315,12 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT .build(); VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); MetadataValue expected = itemMetadataValue(); - assertEquals(client.getCatalogClient().getMetadataClient().getMetadataValue(catalogItemReference, "KEY"), expected); + assertEquals(client.getCatalogClient().getMetadataClient().getMetadataValue(catalogItemURI, "KEY"), expected); } @Test @@ -384,17 +342,13 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); MetadataValue value = MetadataValue.builder().value("KITTENS").build(); Task expected = setMetadataValueTask(); - assertEquals(client.getCatalogClient().getMetadataClient().setMetadata(catalogItemReference, "KEY", value), expected); + assertEquals(client.getCatalogClient().getMetadataClient().setMetadata(catalogItemURI, "KEY", value), expected); } @Test @@ -415,15 +369,11 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse); - Reference catalogItemReference = Reference.builder() - .type("application/vnd.vmware.vcloud.catalogItem+xml") - .name("ubuntu10") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df")) - .build(); + URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df"); Task expected = deleteMetadataEntryTask(); - assertEquals(client.getCatalogClient().getMetadataClient().deleteMetadataEntry(catalogItemReference, "KEY"), expected); + assertEquals(client.getCatalogClient().getMetadataClient().deleteMetadataEntry(catalogItemURI, "KEY"), expected); } public static final Catalog catalog() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java index 7cdf8e37f9..92090b6671 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/CatalogClientLiveTest.java @@ -31,6 +31,8 @@ import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; +import java.net.URI; + import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.domain.Catalog; import org.jclouds.vcloud.director.v1_5.domain.CatalogItem; @@ -91,14 +93,14 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { CatalogReferences catalogReferences = queryClient.catalogReferencesQuery(String.format("name==%s", catalogName)); assertEquals(Iterables.size(catalogReferences.getReferences()), 1, String.format(MUST_EXIST_FMT, catalogName, "Catalog")); catalogRef = Iterables.getOnlyElement(catalogReferences.getReferences()); - catalog = catalogClient.getCatalog(catalogRef); + catalog = catalogClient.getCatalog(catalogRef.getHref()); } @Test(testName = "GET /catalogItem/{id}", dependsOnMethods = { "testGetCatalog" }) public void testGetCatalogItem() { assertFalse(Iterables.isEmpty(catalog.getCatalogItems().getCatalogItems())); catalogItemRef = Iterables.get(catalog.getCatalogItems().getCatalogItems(), 0); - catalogItem = catalogClient.getCatalogItem(catalogItemRef); + catalogItem = catalogClient.getCatalogItem(catalogItemRef.getHref()); checkCatalogItem(catalogItem); } @@ -114,14 +116,14 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { // XXX org.jclouds.vcloud.director.v1_5.VCloudDirectorException: Error: The VCD entity ubuntu10 already exists. // .entity(Reference.builder().href(URI.create(endpoint + "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9")).build()) .build(); - newCatalogItem = catalogClient.addCatalogItem(catalogRef, editedCatalogItem); + newCatalogItem = catalogClient.addCatalogItem(catalogRef.getHref(), editedCatalogItem); checkCatalogItem(newCatalogItem); assertEquals(newCatalogItem.getName(), "newitem"); } @Test(testName = "PUT /catalogItem/{id}", dependsOnMethods = { "testAddCatalogItem" }, enabled = false) public void testUpdateCatalogItem() { - Catalog catalog = catalogClient.getCatalog(catalogRef); + Catalog catalog = catalogClient.getCatalog(catalogRef.getHref()); newCatalogItemRef = Iterables.find(catalog.getCatalogItems().getCatalogItems(), new Predicate() { @Override public boolean apply(Reference input) { @@ -129,16 +131,16 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { } }); CatalogItem updatedCatalogItem = CatalogItem.builder().fromCatalogItem(catalogItem).name("UPDATEDNAME").build(); - newCatalogItem = catalogClient.updateCatalogItem(catalogRef, updatedCatalogItem); + newCatalogItem = catalogClient.updateCatalogItem(catalogRef.getHref(), updatedCatalogItem); checkCatalogItem(newCatalogItem); assertEquals(newCatalogItem.getName(), "UPDATEDNAME"); } @Test(testName = "DELETE /catalogItem/{id}", dependsOnMethods = { "testAddCatalogItem" }, enabled = false) public void testDeleteCatalogItem() { - catalogClient.deleteCatalogItem(newCatalogItemRef); + catalogClient.deleteCatalogItem(newCatalogItemRef.getHref()); try { - catalogClient.getCatalogItem(newCatalogItemRef); + catalogClient.getCatalogItem(newCatalogItemRef.getHref()); fail("The CatalogItem should have been deleted"); } catch (VCloudDirectorException vcde) { checkError(vcde.getError()); @@ -150,7 +152,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { // NOTE for this test to work, we need to be able to create metadata on a Catalog, specifically { "KEY", "VALUE" } @Test(testName = "GET /catalog/{id}/metadata", dependsOnMethods = { "testGetCatalog" }, enabled = false) public void testGetCatalogMetadata() { - catalogMetadata = catalogClient.getMetadataClient().getMetadata(catalogRef); + catalogMetadata = catalogClient.getMetadataClient().getMetadata(catalogRef.getHref()); checkMetadata(catalogMetadata); } @@ -163,7 +165,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { return input.getKey().equals("KEY"); } }); - MetadataValue metadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogRef, "KEY"); + MetadataValue metadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogRef.getHref(), "KEY"); assertEquals(metadataValue.getValue(), existingMetadataEntry.getValue(), String.format(CORRECT_VALUE_OBJECT_FMT, "Value", "MetadataValue", existingMetadataEntry.getValue(), metadataValue.getValue())); checkMetadataValue(metadataValue); @@ -171,8 +173,8 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /catalogItem/{id}/metadata", dependsOnMethods = { "testGetCatalogItem" }) public void testGetCatalogItemMetadata() { - resetCatalogItemMetadata(catalogItemRef); - catalogItemMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef); + resetCatalogItemMetadata(catalogItemRef.getHref()); + catalogItemMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef.getHref()); assertEquals(catalogItemMetadata.getMetadataEntries().size(), 1, String.format(MUST_EXIST_FMT, "MetadataEntry", "CatalogItem")); checkMetadata(catalogItemMetadata); } @@ -184,22 +186,22 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { .entry(MetadataEntry.builder().entry("VEGIMITE", "VALUE").build()) .build(); - Task mergeCatalogItemMetadata = catalogClient.getMetadataClient().mergeMetadata(catalogItemRef, newMetadata); + Task mergeCatalogItemMetadata = catalogClient.getMetadataClient().mergeMetadata(catalogItemRef.getHref(), newMetadata); checkTask(mergeCatalogItemMetadata); assertTrue(retryTaskSuccess.apply(mergeCatalogItemMetadata), String.format(TASK_COMPLETE_TIMELY, "mergeCatalogItemMetadata")); - Metadata mergedCatalogItemMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef); + Metadata mergedCatalogItemMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef.getHref()); // XXX assertEquals(mergedCatalogItemMetadata.getMetadataEntries().size(), catalogItemMetadata.getMetadataEntries().size() + 1, "Should have added another MetadataEntry to the CatalogItem"); - MetadataValue keyMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef, "KEY"); + MetadataValue keyMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef.getHref(), "KEY"); // XXX assertEquals(keyMetadataValue.getValue(), "MARMALADE", "The Value of the MetadataValue for KEY should have changed"); checkMetadataValue(keyMetadataValue); - MetadataValue newKeyMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef, "VEGIMITE"); + MetadataValue newKeyMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef.getHref(), "VEGIMITE"); // XXX assertEquals(newKeyMetadataValue.getValue(), "VALUE", "The Value of the MetadataValue for NEW_KEY should have been set"); checkMetadataValue(newKeyMetadataValue); @@ -215,7 +217,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { return input.getKey().equals("KEY"); } }); - MetadataValue metadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef, "KEY"); + MetadataValue metadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef.getHref(), "KEY"); assertEquals(existingMetadataEntry.getValue(), metadataValue.getValue()); checkMetadataValue(metadataValue); } @@ -224,13 +226,13 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { public void testSetCatalogItemMetadataValue() { MetadataValue newMetadataValue = MetadataValue.builder().value("NEW").build(); - Task setCatalogItemMetadataValue = catalogClient.getMetadataClient().setMetadata(catalogItemRef, "KEY", newMetadataValue); + Task setCatalogItemMetadataValue = catalogClient.getMetadataClient().setMetadata(catalogItemRef.getHref(), "KEY", newMetadataValue); checkTask(setCatalogItemMetadataValue); Checks.checkTask(setCatalogItemMetadataValue); assertTrue(retryTaskSuccess.apply(setCatalogItemMetadataValue), String.format(TASK_COMPLETE_TIMELY, "setCatalogItemMetadataValue")); - MetadataValue updatedMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef, "KEY"); + MetadataValue updatedMetadataValue = catalogClient.getMetadataClient().getMetadataValue(catalogItemRef.getHref(), "KEY"); assertEquals(updatedMetadataValue.getValue(), newMetadataValue.getValue(), String.format(CORRECT_VALUE_OBJECT_FMT, "Value", "MetadataValue", newMetadataValue.getValue(), updatedMetadataValue.getValue())); checkMetadataValue(updatedMetadataValue); @@ -238,13 +240,13 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "DELETE /catalog/{id}/metadata/{key}", dependsOnMethods = { "testSetCatalogItemMetadataValue" }) public void testDeleteCatalogItemMetadataValue() { - Task deleteCatalogItemMetadataValue = catalogClient.getMetadataClient().deleteMetadataEntry(catalogItemRef, "KEY"); + Task deleteCatalogItemMetadataValue = catalogClient.getMetadataClient().deleteMetadataEntry(catalogItemRef.getHref(), "KEY"); checkTask(deleteCatalogItemMetadataValue); Checks.checkTask(deleteCatalogItemMetadataValue); assertTrue(retryTaskSuccess.apply(deleteCatalogItemMetadataValue), String.format(TASK_COMPLETE_TIMELY, "deleteCatalogItemMetadataValue")); try { - catalogClient.getMetadataClient().getMetadataValue(catalogItemRef, "KEY"); + catalogClient.getMetadataClient().getMetadataValue(catalogItemRef.getHref(), "KEY"); fail("The CatalogItem MetadataValue for KEY should have been deleted"); } catch (VCloudDirectorException vcde) { Error error = vcde.getError(); @@ -255,19 +257,19 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest { } } - private void deleteAllCatalogItemMetadata(ReferenceType catalogItemRef) { - Metadata currentMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef); + private void deleteAllCatalogItemMetadata(URI catalogItemURI) { + Metadata currentMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemURI); for (MetadataEntry currentMetadataEntry : currentMetadata.getMetadataEntries()) { - catalogClient.getMetadataClient().deleteMetadataEntry(catalogItemRef, currentMetadataEntry.getKey()); + catalogClient.getMetadataClient().deleteMetadataEntry(catalogItemURI, currentMetadataEntry.getKey()); } - Metadata emptyMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemRef); + Metadata emptyMetadata = catalogClient.getMetadataClient().getMetadata(catalogItemURI); assertTrue(emptyMetadata.getMetadataEntries().isEmpty(), "The catalogItem Metadata should be empty"); } - private void resetCatalogItemMetadata(ReferenceType catalogItemRef) { - deleteAllCatalogItemMetadata(catalogItemRef); + private void resetCatalogItemMetadata(URI catalogItemURI) { + deleteAllCatalogItemMetadata(catalogItemURI); Metadata newMetadata = Metadata.builder().entry(MetadataEntry.builder().entry("KEY", "VALUE").build()).build(); - Task mergeCatalogItemMetadata = catalogClient.getMetadataClient().mergeMetadata(catalogItemRef, newMetadata); + Task mergeCatalogItemMetadata = catalogClient.getMetadataClient().mergeMetadata(catalogItemURI, newMetadata); Checks.checkTask(mergeCatalogItemMetadata); assertTrue(retryTaskSuccess.apply(mergeCatalogItemMetadata), String.format(TASK_COMPLETE_TIMELY, "mergeCatalogItemMetadata")); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java index 3a0be0a75d..00d2f18ee4 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientExpectTest.java @@ -26,19 +26,8 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams; +import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.File; -import org.jclouds.vcloud.director.v1_5.domain.FilesList; -import org.jclouds.vcloud.director.v1_5.domain.Link; -import org.jclouds.vcloud.director.v1_5.domain.Media; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry; -import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; -import org.jclouds.vcloud.director.v1_5.domain.Owner; -import org.jclouds.vcloud.director.v1_5.domain.Reference; -import org.jclouds.vcloud.director.v1_5.domain.Task; -import org.jclouds.vcloud.director.v1_5.domain.TasksInProgress; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -73,9 +62,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .build(); Media expected = createMedia(); - Reference vdcRef = Reference.builder().href(vdcUri).build(); - - assertEquals(client.getVdcClient().createMedia(vdcRef, source), expected); + assertEquals(client.getVdcClient().createMedia(vdcUri, source), expected); } @Test @@ -96,18 +83,16 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .name("moved test media") .description("moved by testCloneMedia()") .source(Reference.builder() - .type("application/vnd.vmware.vcloud.media+xml") - .name("copied test media") - .id("urn:vcloud:media:da8361af-cccd-4103-a71c-493513c49094") - .href(URI.create("https://mycloud.greenhousedata.com/api/media/da8361af-cccd-4103-a71c-493513c49094")) - .build()) + .type("application/vnd.vmware.vcloud.media+xml") + .name("copied test media") + .id("urn:vcloud:media:da8361af-cccd-4103-a71c-493513c49094") + .href(URI.create("https://mycloud.greenhousedata.com/api/media/da8361af-cccd-4103-a71c-493513c49094")) + .build()) .isSourceDelete(false) .build(); Media expected = cloneMedia(); - Reference vdcRef = Reference.builder().href(vdcUri).build(); - - assertEquals(client.getVdcClient().cloneMedia(vdcRef, params), expected); + assertEquals(client.getVdcClient().cloneMedia(vdcUri, params), expected); } @Test @@ -124,10 +109,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .httpResponseBuilder().build()); Media expected = getMedia(); - - Reference mediaRef = Reference.builder().href(mediaUri).build(); - - assertEquals(client.getMediaClient().getMedia(mediaRef), expected); + assertEquals(client.getMediaClient().getMedia(mediaUri), expected); } @Test @@ -148,11 +130,9 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .majorErrorCode(400) .minorErrorCode("BAD_REQUEST") .build(); - - Reference mediaRef = Reference.builder().href(mediaUri).build(); - + try { - client.getMediaClient().getMedia(mediaRef); + client.getMediaClient().getMedia(mediaUri); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -179,11 +159,9 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .majorErrorCode(403) .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - - Reference mediaRef = Reference.builder().href(mediaUri).build(); - + try { - client.getMediaClient().getMedia(mediaRef); + client.getMediaClient().getMedia(mediaUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -210,11 +188,9 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .majorErrorCode(403) .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - - Reference mediaRef = Reference.builder().href(mediaUri).build(); - + try { - client.getMediaClient().getMedia(mediaRef); + client.getMediaClient().getMedia(mediaUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -239,9 +215,8 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes Media update = updateMedia(); Task expected = updateMediaTask(); - Reference mediaRef = Reference.builder().href(mediaUri).build(); - - assertEquals(client.getMediaClient().updateMedia(mediaRef, update), expected); + + assertEquals(client.getMediaClient().updateMedia(mediaUri, update), expected); } @Test @@ -258,9 +233,8 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .httpResponseBuilder().build()); Task expected = deleteMediaTask(); - Reference mediaRef = Reference.builder().href(mediaUri).build(); - assertEquals(client.getMediaClient().deleteMedia(mediaRef), expected); + assertEquals(client.getMediaClient().deleteMedia(mediaUri), expected); } @Test @@ -276,11 +250,10 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .xmlFilePayload("/media/metadata.xml", VCloudDirectorMediaType.METADATA) .httpResponseBuilder().build()); - Reference mediaRef = Reference.builder().href(mediaUri).build(); Metadata expected = metadata(); - assertEquals(client.getMediaClient().getMetadataClient().getMetadata(mediaRef), expected); + assertEquals(client.getMediaClient().getMetadataClient().getMetadata(mediaUri), expected); } @Test @@ -297,11 +270,10 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .xmlFilePayload("/media/mergeMetadataTask.xml", VCloudDirectorMediaType.TASK) .httpResponseBuilder().build()); - Reference mediaRef = Reference.builder().href(mediaUri).build(); Metadata inputMetadata = metadata(); Task expectedTask = mergeMetadataTask(); - assertEquals(client.getMediaClient().getMetadataClient().mergeMetadata(mediaRef, inputMetadata), expectedTask); + assertEquals(client.getMediaClient().getMetadataClient().mergeMetadata(mediaUri, inputMetadata), expectedTask); } public void testGetMetadataValue() { @@ -318,9 +290,8 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes MetadataValue expected = metadataValue(); - Reference mediaRef = Reference.builder().href(mediaUri).build(); - assertEquals(client.getMediaClient().getMetadataClient().getMetadataValue(mediaRef, "key"), expected); + assertEquals(client.getMediaClient().getMetadataClient().getMetadataValue(mediaUri, "key"), expected); } @Test @@ -337,12 +308,11 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .xmlFilePayload("/media/setMetadataValueTask.xml", VCloudDirectorMediaType.TASK) .httpResponseBuilder().build()); - Reference mediaRef = Reference.builder().href(mediaUri).build(); MetadataValue inputMetadataValue = MetadataValue.builder().value("value").build(); Task expectedTask = setMetadataEntryTask(); - assertEquals(client.getMediaClient().getMetadataClient().setMetadata(mediaRef, "key", inputMetadataValue), expectedTask); + assertEquals(client.getMediaClient().getMetadataClient().setMetadata(mediaUri, "key", inputMetadataValue), expectedTask); } @Test @@ -358,10 +328,9 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .xmlFilePayload("/media/deleteMetadataEntryTask.xml", VCloudDirectorMediaType.TASK) .httpResponseBuilder().build()); - Reference mediaRef = Reference.builder().href(mediaUri).build(); Task expectedTask = deleteMetadataEntryTask(); - assertEquals(client.getMediaClient().getMetadataClient().deleteMetadataEntry(mediaRef, "key"), expectedTask); + assertEquals(client.getMediaClient().getMetadataClient().deleteMetadataEntry(mediaUri, "key"), expectedTask); } @Test @@ -379,9 +348,7 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes Owner expected = owner(); - Reference mediaRef = Reference.builder().href(mediaUri).build(); - - assertEquals(client.getMediaClient().getOwner(mediaRef), expected); + assertEquals(client.getMediaClient().getOwner(mediaUri), expected); } private static Media createMedia() { @@ -482,10 +449,10 @@ public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTes .id("urn:vcloud:media:794eb334-754e-4917-b5a0-5df85cbd61d1") .href(URI.create("https://mycloud.greenhousedata.com/api/media/794eb334-754e-4917-b5a0-5df85cbd61d1")) .link(Link.builder() - .rel("up") - .type("application/vnd.vmware.vcloud.vdc+xml") - .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f")) - .build()) + .rel("up") + .type("application/vnd.vmware.vcloud.vdc+xml") + .href(URI.create("https://mycloud.greenhousedata.com/api/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f")) + .build()) .link(Link.builder() .rel("catalogItem") .type("application/vnd.vmware.vcloud.catalogItem+xml") diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java index 84ace497cf..466f799544 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/MediaClientLiveTest.java @@ -63,19 +63,14 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { * Convenience references to API clients. */ - private URISupplier vdcRef; + private URI vdcUri; protected VdcClient vdcClient; protected MediaClient mediaClient; @BeforeClass(inheritGroups = true) @Override public void setupRequiredClients() { - vdcRef = Reference.builder() - .type("application/vnd.vmware.vcloud.vdc+xml") - .name("") - .href(URI.create(endpoint+"/vdc/"+vdcId)) - .id(vdcId) - .build(); + vdcUri = URI.create(endpoint+"/vdc/"+vdcId); vdcClient = context.getApi().getVdcClient(); mediaClient = context.getApi().getMediaClient(); @@ -92,8 +87,8 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/media", enabled = false) public void testCreateMedia() throws URISyntaxException { - assertNotNull(vdcRef, String.format(REF_REQ_LIVE, VDC)); - assertNotNull(vdcClient.getVdc(vdcRef), String.format(OBJ_REQ_LIVE, VDC)); + assertNotNull(vdcUri, String.format(REF_REQ_LIVE, VDC)); + assertNotNull(vdcClient.getVdc(vdcUri), String.format(OBJ_REQ_LIVE, VDC)); java.io.File sourceFile = new java.io.File(getClass().getResource("/media/test.iso").toURI()); @@ -104,7 +99,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .imageType(Media.ImageType.ISO) .description("Test media generated by testCreateMedia()") .build(); - media = vdcClient.createMedia(vdcRef, sourceMedia); + media = vdcClient.createMedia(vdcUri, sourceMedia); Checks.checkMediaFor(MEDIA, media); @@ -124,12 +119,12 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { assertTrue(equal(uploadLink.getRel(), Link.Rel.UPLOAD_DEFAULT), String.format(OBJ_FIELD_REQ, MEDIA, "uploadFile.links.first")); fail(); //TODO upload file and assert it succeeds - context.getApi().getUploadClient().uploadFile(uploadLink, sourceFile); + context.getApi().getUploadClient().uploadFile(uploadLink.getHref(), sourceFile); } @Test(testName = "GET /media/{id}", dependsOnMethods = { "testCreateMedia" }, enabled = false) public void testGetMedia() { - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); assertNotNull(media, String.format(OBJ_REQ_LIVE, MEDIA)); owner = media.getOwner(); @@ -142,7 +137,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /media/{id}/owner", dependsOnMethods = { "testGetMedia" }, enabled = false) public void testGetMediaOwner() { - Owner directOwner = mediaClient.getOwner(media); + Owner directOwner = mediaClient.getOwner(media.getHref()); assertEquals(owner, directOwner, String.format(GETTER_RETURNS_SAME_OBJ, "getOwner()", "owner", "media.getOwner()", owner.toString(), directOwner.toString())); @@ -158,7 +153,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { dependsOnMethods = { "testGetMediaOwner" }, enabled = false) public void testCloneMedia() { oldMedia = media; - media = vdcClient.cloneMedia(vdcRef, CloneMediaParams.builder() + media = vdcClient.cloneMedia(vdcUri, CloneMediaParams.builder() .source(Reference.builder().fromEntity(media).build()) .name("copied test media") .description("copied by testCloneMedia()") @@ -171,7 +166,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); } } @@ -179,9 +174,9 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { assertTrue(media.clone(oldMedia), String.format(OBJ_FIELD_CLONE, MEDIA, "copied media", media.toString(), oldMedia.toString())); - mediaClient.getMetadataClient().setMetadata(media, "key", MetadataValue.builder().value("value").build()); + mediaClient.getMetadataClient().setMetadata(media.getHref(), "key", MetadataValue.builder().value("value").build()); - media = vdcClient.cloneMedia(vdcRef, CloneMediaParams.builder() + media = vdcClient.cloneMedia(vdcUri, CloneMediaParams.builder() .source(Reference.builder().fromEntity(media).build()) .name("moved test media") .description("moved by testCloneMedia()") @@ -195,7 +190,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { if (copyTask != null) { Checks.checkTask(copyTask); assertTrue(retryTaskSuccess.apply(copyTask), String.format(TASK_COMPLETE_TIMELY, "copyTask")); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); } } @@ -213,10 +208,10 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { String newDescription = "new "+oldDescription; media = media.toBuilder().name(newName).description(newDescription).build(); - Task updateMedia = mediaClient.updateMedia(media, media); + Task updateMedia = mediaClient.updateMedia(media.getHref(), media); Checks.checkTask(updateMedia); assertTrue(retryTaskSuccess.apply(updateMedia), String.format(TASK_COMPLETE_TIMELY, "updateMedia")); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); assertTrue(equal(media.getName(), newName), String.format(OBJ_FIELD_UPDATABLE, MEDIA, "name")); assertTrue(equal(media.getDescription(), newDescription), @@ -228,16 +223,16 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { media = media.toBuilder().name(oldName).description(oldDescription).build(); - updateMedia = mediaClient.updateMedia(media, media); + updateMedia = mediaClient.updateMedia(media.getHref(), media); Checks.checkTask(updateMedia); assertTrue(retryTaskSuccess.apply(updateMedia), String.format(TASK_COMPLETE_TIMELY, "updateMedia")); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); } @Test(testName = "GET /media/{id}/metadata", dependsOnMethods = { "testGetMedia" }, enabled = false) public void testGetMetadata() { - metadata = mediaClient.getMetadataClient().getMetadata(media); + metadata = mediaClient.getMetadataClient().getMetadata(media.getHref()); // required for testing assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), String.format(OBJ_FIELD_REQ_LIVE, MEDIA, "metadata.entries")); @@ -254,14 +249,14 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .entries(inputEntries) .build(); - Task mergeMetadata = mediaClient.getMetadataClient().mergeMetadata(media, inputMetadata); + Task mergeMetadata = mediaClient.getMetadataClient().mergeMetadata(media.getHref(), inputMetadata); Checks.checkTask(mergeMetadata); assertTrue(retryTaskSuccess.apply(mergeMetadata), String.format(TASK_COMPLETE_TIMELY, "mergeMetadata(new)")); - metadata = mediaClient.getMetadataClient().getMetadata(media); + metadata = mediaClient.getMetadataClient().getMetadata(media.getHref()); Checks.checkMetadataFor(MEDIA, metadata); checkMetadataContainsEntries(metadata, inputEntries); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); Checks.checkMediaFor(MEDIA, media); // test modify @@ -270,14 +265,14 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .entries(inputEntries) .build(); - mergeMetadata = mediaClient.getMetadataClient().mergeMetadata(media, inputMetadata); + mergeMetadata = mediaClient.getMetadataClient().mergeMetadata(media.getHref(), inputMetadata); Checks.checkTask(mergeMetadata); assertTrue(retryTaskSuccess.apply(mergeMetadata), String.format(TASK_COMPLETE_TIMELY, "mergeMetadata(modify)")); - metadata = mediaClient.getMetadataClient().getMetadata(media); + metadata = mediaClient.getMetadataClient().getMetadata(media.getHref()); Checks.checkMetadataFor(MEDIA, metadata); checkMetadataContainsEntries(metadata, inputEntries); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); Checks.checkMediaFor(MEDIA, media); } @@ -301,7 +296,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /media/{id}/metadata/{key}", dependsOnMethods = { "testMergeMetadata" }, enabled = false) public void testGetMetadataValue() { - metadataValue = mediaClient.getMetadataClient().getMetadataValue(media, "key"); + metadataValue = mediaClient.getMetadataClient().getMetadataValue(media.getHref(), "key"); Checks.checkMetadataValueFor(MEDIA, metadataValue); } @@ -311,18 +306,18 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { metadataEntryValue = "newValue"; MetadataValue newValue = MetadataValue.builder().value(metadataEntryValue).build(); - Task setMetadataEntry = mediaClient.getMetadataClient().setMetadata(media, "key", newValue); + Task setMetadataEntry = mediaClient.getMetadataClient().setMetadata(media.getHref(), "key", newValue); Checks.checkTask(setMetadataEntry); assertTrue(retryTaskSuccess.apply(setMetadataEntry), String.format(TASK_COMPLETE_TIMELY, "setMetadataEntry")); - metadataValue = mediaClient.getMetadataClient().getMetadataValue(media, "key"); + metadataValue = mediaClient.getMetadataClient().getMetadataValue(media.getHref(), "key"); Checks.checkMetadataValueFor(MEDIA, metadataValue); } @Test(testName = "DELETE /media/{id}/metadata/{key}", dependsOnMethods = { "testSetMetadataValue" }, enabled = false ) public void testDeleteMetadata() { - Task deleteMetadataEntry = mediaClient.getMetadataClient().deleteMetadataEntry(media, "testKey"); + Task deleteMetadataEntry = mediaClient.getMetadataClient().deleteMetadataEntry(media.getHref(), "testKey"); Checks.checkTask(deleteMetadataEntry); assertTrue(retryTaskSuccess.apply(deleteMetadataEntry), String.format(TASK_COMPLETE_TIMELY, "deleteMetadataEntry")); @@ -334,7 +329,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); try { - metadataValue = mediaClient.getMetadataClient().getMetadataValue(media, "testKey"); + metadataValue = mediaClient.getMetadataClient().getMetadataValue(media.getHref(), "testKey"); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -349,17 +344,17 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { "metadataEntry", metadataValue.toString())); } - metadataValue = mediaClient.getMetadataClient().getMetadataValue(media, "key"); + metadataValue = mediaClient.getMetadataClient().getMetadataValue(media.getHref(), "key"); Checks.checkMetadataValueFor(MEDIA, metadataValue); - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); Checks.checkMediaFor(MEDIA, media); } @Test(testName = "DELETE /media/{id}", dependsOnMethods = { "testDeleteMetadata" }, enabled = false ) public void testDeleteMedia() { - Task deleteMedia = mediaClient.deleteMedia(media); + Task deleteMedia = mediaClient.deleteMedia(media.getHref()); Checks.checkTask(deleteMedia); assertTrue(retryTaskSuccess.apply(deleteMedia), String.format(TASK_COMPLETE_TIMELY, "deleteMedia")); @@ -373,7 +368,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); try { - media = mediaClient.getMedia(media); + media = mediaClient.getMedia(media.getHref()); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -386,7 +381,7 @@ public class MediaClientLiveTest extends BaseVCloudDirectorClientLiveTest { assertNull(metadataValue, String.format(OBJ_DEL, MEDIA, media.toString())); } - deleteMedia = mediaClient.deleteMedia(oldMedia); + deleteMedia = mediaClient.deleteMedia(oldMedia.getHref()); Checks.checkTask(deleteMedia); } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java index fecbe925b4..a402151636 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientExpectTest.java @@ -27,17 +27,7 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.IpAddresses; -import org.jclouds.vcloud.director.v1_5.domain.IpRange; -import org.jclouds.vcloud.director.v1_5.domain.IpRanges; -import org.jclouds.vcloud.director.v1_5.domain.IpScope; -import org.jclouds.vcloud.director.v1_5.domain.Link; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry; -import org.jclouds.vcloud.director.v1_5.domain.NetworkConfiguration; -import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork; -import org.jclouds.vcloud.director.v1_5.domain.Reference; -import org.jclouds.vcloud.director.v1_5.domain.SyslogServerSettings; +import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -60,10 +50,7 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT getStandardPayloadResponse("/network/network.xml", VCloudDirectorMediaType.ORG_NETWORK)); OrgNetwork expected = orgNetwork(); - - Reference networkRef = Reference.builder().href(networkUri).build(); - - assertEquals(client.getNetworkClient().getNetwork(networkRef), expected); + assertEquals(client.getNetworkClient().getNetwork(networkUri), expected); } @Test @@ -80,9 +67,8 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT .minorErrorCode("BAD_REQUEST") .build(); - Reference networkRef = Reference.builder().href(networkUri).build(); try { - client.getNetworkClient().getNetwork(networkRef); + client.getNetworkClient().getNetwork(networkUri); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -105,10 +91,8 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference networkRef = Reference.builder().href(networkUri).build(); - try { - client.getNetworkClient().getNetwork(networkRef); + client.getNetworkClient().getNetwork(networkUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -131,10 +115,8 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference networkRef = Reference.builder().href(networkUri).build(); - try { - client.getNetworkClient().getNetwork(networkRef); + client.getNetworkClient().getNetwork(networkUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -166,10 +148,8 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT .build()) .entries(ImmutableSet.of(MetadataEntry.builder().entry("key", "value").build())) .build(); - - Reference networkRef = Reference.builder().href(networkUri).build(); - assertEquals(client.getNetworkClient().getMetadataClient().getMetadata(networkRef), expected); + assertEquals(client.getNetworkClient().getMetadataClient().getMetadata(networkUri), expected); } @Test(enabled=false) // No metadata in exemplar xml... @@ -184,9 +164,7 @@ public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectT .entry("key", "value") .build(); - Reference networkRef = Reference.builder().href(networkUri).build(); - - assertEquals(client.getNetworkClient().getMetadataClient().getMetadataValue(networkRef, "KEY"), expected); + assertEquals(client.getNetworkClient().getMetadataClient().getMetadataValue(networkUri, "KEY"), expected); } public static OrgNetwork orgNetwork() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java index bbed422499..d7614abbe7 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/NetworkClientLiveTest.java @@ -18,11 +18,7 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_ATTRB_REQ; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_EQ; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ_LIVE; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_REQ_LIVE; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.*; import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkResourceType; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; @@ -37,7 +33,6 @@ import org.jclouds.vcloud.director.v1_5.domain.Metadata; import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry; import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork; -import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; @@ -60,26 +55,21 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ protected NetworkClient networkClient; - private Reference networkRef; + private URI networkURI; @BeforeClass(inheritGroups = true) @Override public void setupRequiredClients() { - networkRef = Reference.builder() - .type("application/vnd.vmware.vcloud.orgNetwork+xml") - .name("") - .href(URI.create(endpoint+"/network/"+networkId)) - .id(networkId) - .build(); + networkURI = URI.create(endpoint+"/network/"+networkId); networkClient = context.getApi().getNetworkClient(); } @Test(testName = "GET /network/{id}") public void testGetNetwork() { // required for testing - assertNotNull(networkRef, String.format(REF_REQ_LIVE, NETWORK)); + assertNotNull(networkURI, String.format(REF_REQ_LIVE, NETWORK)); - OrgNetwork network = networkClient.getNetwork(networkRef); + OrgNetwork network = networkClient.getNetwork(networkURI); assertNotNull(network, String.format(OBJ_REQ_LIVE, NETWORK)); assertTrue(!network.getDescription().equals("DO NOT USE"), "Network isn't to be used for testing"); @@ -100,7 +90,7 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /network/{id}/metadata") public void testGetMetadata() { - Metadata metadata = networkClient.getMetadataClient().getMetadata(networkRef); + Metadata metadata = networkClient.getMetadataClient().getMetadata(networkURI); // required for testing assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), String.format(OBJ_FIELD_REQ_LIVE, NETWORK, "metadata.entries")); @@ -122,7 +112,7 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /network/{id}/metadata/{key}") public void testGetMetadataValue() { - MetadataValue metadataValue = networkClient.getMetadataClient().getMetadataValue(networkRef, "key"); + MetadataValue metadataValue = networkClient.getMetadataClient().getMetadataValue(networkURI, "key"); // Check parent type checkResourceType(metadataValue); diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientExpectTest.java index 67242bafc2..4dfa409e9b 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientExpectTest.java @@ -79,7 +79,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest Org expected = org(); - assertEquals(client.getOrgClient().getOrg(org), expected); + assertEquals(client.getOrgClient().getOrg(org.getHref()), expected); } @Test @@ -92,9 +92,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest Org expected = org(); - Reference orgRef = Reference.builder().href(orgUri).build(); - - assertEquals(client.getOrgClient().getOrg(orgRef), expected); + assertEquals(client.getOrgClient().getOrg(orgUri), expected); } @Test @@ -111,9 +109,8 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("BAD_REQUEST") .build(); - Reference orgRef = Reference.builder().href(orgUri).build(); try { - client.getOrgClient().getOrg(orgRef); + client.getOrgClient().getOrg(orgUri); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -136,10 +133,8 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference orgRef = Reference.builder().href(orgUri).build(); - try { - client.getOrgClient().getOrg(orgRef); + client.getOrgClient().getOrg(orgUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -162,10 +157,8 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference orgRef = Reference.builder().href(orgUri).build(); - try { - client.getOrgClient().getOrg(orgRef); + client.getOrgClient().getOrg(orgUri); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -197,10 +190,8 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build()) .entries(ImmutableSet.of(metadataEntry())) .build(); - - Reference orgRef = Reference.builder().href(orgUri).build(); - assertEquals(client.getOrgClient().getMetadataClient().getMetadata(orgRef), expected); + assertEquals(client.getOrgClient().getMetadataClient().getMetadata(orgUri), expected); } @Test @@ -218,9 +209,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest MetadataValue expected = metadataValue(); - Reference orgRef = Reference.builder().href(orgUri).build(); - - assertEquals(client.getOrgClient().getMetadataClient().getMetadataValue(orgRef, "KEY"), expected); + assertEquals(client.getOrgClient().getMetadataClient().getMetadataValue(orgUri, "KEY"), expected); } public static Org org() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java index bd03051da0..9b87ad8ed6 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java @@ -27,6 +27,9 @@ import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkOrg; import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkReferenceType; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; + +import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; import org.jclouds.vcloud.director.v1_5.domain.Metadata; @@ -65,7 +68,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private OrgList orgList; - private Reference orgRef; + private URI orgURI; private Org org; @Test(testName = "GET /org/") @@ -86,10 +89,13 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /org/{id}", dependsOnMethods = { "testGetOrgList" }) public void testGetOrg() { - orgRef = Iterables.getFirst(orgList.getOrgs(), null); - + Reference orgRef = Iterables.getFirst(orgList.getOrgs(), null); + assertNotNull(orgRef); + + orgURI = orgRef.getURI(); + // Call the method being tested - org = orgClient.getOrg(orgRef); + org = orgClient.getOrg(orgURI); checkOrg(org); } @@ -97,7 +103,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /org/{id}/metadata/", dependsOnMethods = { "testGetOrg" }) public void testGetOrgMetadata() { // Call the method being tested - Metadata metadata = orgClient.getMetadataClient().getMetadata(orgRef); + Metadata metadata = orgClient.getMetadataClient().getMetadata(orgURI); // NOTE The environment MUST have at one metadata entry for the first organisation configured @@ -110,7 +116,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /org/{id}/metadata/{key}", dependsOnMethods = { "testGetOrgMetadata" }) public void testGetOrgMetadataValue() { // Call the method being tested - MetadataValue value = orgClient.getMetadataClient().getMetadataValue(orgRef, "KEY"); + MetadataValue value = orgClient.getMetadataClient().getMetadataValue(orgURI, "KEY"); // NOTE The environment MUST have configured the metadata entry as '{ key="KEY", value="VALUE" )' diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java index dba061c25c..77ac6d25e6 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientExpectTest.java @@ -32,7 +32,6 @@ import org.jclouds.vcloud.director.v1_5.domain.Error; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.domain.TasksList; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -86,9 +85,7 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .task(taskTwo()) .build(); - Reference orgRef = Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")).build(); - - assertEquals(client.getTaskClient().getTaskList(orgRef), expected); + assertEquals(client.getTaskClient().getTaskList(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")), expected); } @Test @@ -126,10 +123,8 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("BAD_REQUEST") .build(); - Reference orgRef = Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/org/NOTAUUID")).build(); - try { - client.getTaskClient().getTaskList(orgRef); + client.getTaskClient().getTaskList(URI.create("https://vcloudbeta.bluelock.com/api/org/NOTAUUID")); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -173,10 +168,8 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference orgRef = Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/org/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")).build(); - try { - client.getTaskClient().getTaskList(orgRef); + client.getTaskClient().getTaskList(URI.create("https://vcloudbeta.bluelock.com/api/org/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); @@ -203,7 +196,7 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, taskRequest, taskResponse); - URISupplier taskUri = URISupplier.SingleURI.fromURI(URI.create(endpoint + "/task/5fcd2af3-d0ec-45ce-9451-8c585a2c766b")); + URI taskUri = URI.create(endpoint + "/task/5fcd2af3-d0ec-45ce-9451-8c585a2c766b"); Task expected = taskOne(); @@ -227,7 +220,7 @@ public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, taskRequest, taskResponse); - URISupplier taskUri = URISupplier.SingleURI.fromURI(URI.create(endpoint + "/task/5fcd2af3-d0ec-45ce-9451-8c585a2c766b")); + URI taskUri = URI.create(endpoint + "/task/5fcd2af3-d0ec-45ce-9451-8c585a2c766b"); client.getTaskClient().cancelTask(taskUri); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java index 95a412b1df..3b135666ef 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/TaskClientLiveTest.java @@ -21,12 +21,14 @@ package org.jclouds.vcloud.director.v1_5.features; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.NOT_EMPTY_OBJECT_FMT; import static org.jclouds.vcloud.director.v1_5.domain.Checks.checkTask; import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; + +import java.net.URI; import org.jclouds.vcloud.director.v1_5.domain.OrgList; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.domain.TasksList; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -60,18 +62,20 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private OrgList orgList; - private Reference orgRef; + private URI orgURI; private TasksList taskList; private Task task; - private URISupplier taskRef; + private URI taskURI; @Test(testName = "GET /tasksList/{id}") public void testGetTaskList() { orgList = orgClient.getOrgList(); - orgRef = Iterables.getFirst(orgList.getOrgs(), null); + Reference orgRef = Iterables.getFirst(orgList.getOrgs(), null); + assertNotNull(orgRef); + orgURI = orgRef.getHref(); // Call the method being tested - taskList = taskClient.getTaskList(orgRef); + taskList = taskClient.getTaskList(orgURI); // NOTE The environment MUST have ... @@ -85,10 +89,11 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /task/{id}", dependsOnMethods = { "testGetTaskList" }) public void testGetTask() { - taskRef = Iterables.getFirst(taskList.getTasks(), null); + Task taskRef = Iterables.getFirst(taskList.getTasks(), null); + taskURI = taskRef.getURI(); // Call the method being tested - task = taskClient.getTask(taskRef); + task = taskClient.getTask(taskURI); // Check required elements and attributes checkTask(task); @@ -97,6 +102,6 @@ public class TaskClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /task/{id}/metadata/", dependsOnMethods = { "testGetTask" }) public void testCancelTask() { // Call the method being tested - taskClient.cancelTask(taskRef); + taskClient.cancelTask(taskURI); } } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java index 99a833caa7..77ee717bb9 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java @@ -43,7 +43,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx public void testVAppTemplate() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId).acceptMedia(VAPP_TEMPLATE).httpRequestBuilder().build(), @@ -55,20 +55,20 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - VAppTemplate template = client.getVAppTemplate(vappTemplateRef); + VAppTemplate template = client.getVAppTemplate(uri); assertEquals(template, exampleTemplate()); - Task task = client.editVAppTemplate(vappTemplateRef, template); + Task task = client.editVAppTemplate(uri, template); assertNotNull(task); - task = client.deleteVappTemplate(vappTemplateRef); + task = client.deleteVappTemplate(uri); assertNotNull(task); } public void testConsolidateVAppTemplate() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/consolidate").acceptMedia(TASK).httpRequestBuilder().build(), @@ -76,13 +76,13 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - Task task = client.consolidateVappTemplate(vappTemplateRef); + Task task = client.consolidateVappTemplate(uri); assertNotNull(task); } public void testDisableDownloadVAppTemplate() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/disableDownload").acceptMedia(TASK).httpRequestBuilder().build(), @@ -90,13 +90,13 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - Task task = client.disableDownloadVappTemplate(vappTemplateRef); + Task task = client.disableDownloadVappTemplate(uri); assertNotNull(task); } public void testEnableDownloadVAppTemplate() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").acceptMedia(TASK).httpRequestBuilder().build(), @@ -104,13 +104,13 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - Task task = client.enableDownloadVappTemplate(vappTemplateRef); + Task task = client.enableDownloadVappTemplate(uri); assertNotNull(task); } public void testRelocateVAppTemplate() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").xmlFilePayload("/vappTemplate/relocateParams.xml", RELOCATE_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), @@ -122,13 +122,13 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx Reference datastore = Reference.builder().href(URI.create("https://vcloud.example.com/api/admin/extension/datastore/607")).build(); RelocateParams params = RelocateParams.builder().datastore(datastore).build(); - Task task = client.relocateVappTemplate(vappTemplateRef, params); + Task task = client.relocateVappTemplate(uri, params); assertNotNull(task); } public void testCustomizationSection() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/customizationSection").acceptMedia(CUSTOMIZATION_SECTION).httpRequestBuilder().build(), @@ -138,17 +138,17 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - CustomizationSection section = client.getVAppTemplateCustomizationSection(vappTemplateRef); + CustomizationSection section = client.getVAppTemplateCustomizationSection(uri); assertEquals(section, exampleCustomizationSection()); - Task task = client.editVAppTemplateCustomizationSection(vappTemplateRef, section); + Task task = client.editVAppTemplateCustomizationSection(uri, section); assertNotNull(task); } public void testGuestCustomizationSection() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/guestCustomizationSection").acceptMedia(GUEST_CUSTOMIZATION_SECTION).httpRequestBuilder().build(), @@ -158,17 +158,17 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - GuestCustomizationSection section = client.getVAppTemplateGuestCustomizationSection(vappTemplateRef); + GuestCustomizationSection section = client.getVAppTemplateGuestCustomizationSection(uri); assertEquals(section, exampleGuestCustomizationSection()); - Task task = client.editVAppTemplateGuestCustomizationSection(vappTemplateRef, section); + Task task = client.editVAppTemplateGuestCustomizationSection(uri, section); assertNotNull(task); } public void testLeaseSettingsSection() throws ParseException { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/leaseSettingsSection").acceptMedia(LEASE_SETTINGS_SECTION).httpRequestBuilder().build(), @@ -178,17 +178,17 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - LeaseSettingsSection section = client.getVappTemplateLeaseSettingsSection(vappTemplateRef); + LeaseSettingsSection section = client.getVappTemplateLeaseSettingsSection(uri); assertEquals(section, exampleLeaseSettingsSection()); - Task task = client.editVappTemplateLeaseSettingsSection(vappTemplateRef, section); + Task task = client.editVappTemplateLeaseSettingsSection(uri, section); assertNotNull(task); } public void testVappTemplateMetadata() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata").acceptMedia(METADATA).httpRequestBuilder().build(), @@ -198,17 +198,17 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - Metadata metadata = client.getVAppTemplateMetadata(vappTemplateRef); + Metadata metadata = client.getVAppTemplateMetadata(uri); assertEquals(metadata, exampleMetadata()); - Task task = client.editVAppTemplateMetadata(vappTemplateRef, metadata); + Task task = client.editVAppTemplateMetadata(uri, metadata); assertNotNull(task); } public void testVappTemplateMetadataValue() { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata/12345").acceptMedia(METADATA_ENTRY).httpRequestBuilder().build(), @@ -220,20 +220,20 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx ).getVAppTemplateClient(); assertNotNull(client); - MetadataValue metadata = client.getVAppTemplateMetadataValue(vappTemplateRef, "12345"); + MetadataValue metadata = client.getVAppTemplateMetadataValue(uri, "12345"); assertEquals(metadata, exampleMetadataValue()); - Task task = client.editVAppTemplateMetadataValue(vappTemplateRef, "12345", metadata); + Task task = client.editVAppTemplateMetadataValue(uri, "12345", metadata); assertNotNull(task); - task = client.deleteVAppTemplateMetadataValue(vappTemplateRef, "12345"); + task = client.deleteVAppTemplateMetadataValue(uri, "12345"); assertNotNull(task); } public void testNetworkConfigSection() throws ParseException { final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; - Reference vappTemplateRef = Reference.builder().href(URI.create(endpoint + templateId)).build(); + URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/networkConfigSection").acceptMedia(NETWORK_CONFIG_SECTION).httpRequestBuilder().build(), @@ -244,11 +244,11 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(client); - NetworkConfigSection section = client.getVAppTemplateNetworkConfigSection(vappTemplateRef); + NetworkConfigSection section = client.getVAppTemplateNetworkConfigSection(uri); assertEquals(section, exampleNetworkConfigSection()); - Task task = client.editVAppTemplateNetworkConfigSection(vappTemplateRef, section); + Task task = client.editVAppTemplateNetworkConfigSection(uri, section); assertNotNull(task); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java index 2fd8602681..5dee93c46e 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientExpectTest.java @@ -26,27 +26,8 @@ import java.net.URI; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; -import org.jclouds.vcloud.director.v1_5.domain.AvailableNetworks; -import org.jclouds.vcloud.director.v1_5.domain.Capabilities; -import org.jclouds.vcloud.director.v1_5.domain.CapacityWithUsage; -import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.ComputeCapacity; +import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.domain.Error; -import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.Link; -import org.jclouds.vcloud.director.v1_5.domain.Media; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; -import org.jclouds.vcloud.director.v1_5.domain.Reference; -import org.jclouds.vcloud.director.v1_5.domain.ResourceEntities; -import org.jclouds.vcloud.director.v1_5.domain.SupportedHardwareVersions; -import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.VApp; -import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; -import org.jclouds.vcloud.director.v1_5.domain.Vdc; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -59,17 +40,12 @@ import org.testng.annotations.Test; @Test(groups = { "unit", "user", "vdc" }, singleThreaded = true, testName = "VdcClientExpectTest") public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { - private Reference vdcRef; + private URI vdcURI; @BeforeClass public void before() { String vdcId = "e9cd3387-ac57-4d27-a481-9bee75e0690f"; - vdcRef = Reference.builder() - .type("application/vnd.vmware.vcloud.vdc+xml") - .name("") - .href(URI.create(endpoint+"/vdc/"+vdcId)) - .id(vdcId) - .build(); + vdcURI = URI.create(endpoint+"/vdc/"+vdcId); } @Test @@ -85,12 +61,11 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest Vdc expected = getVdc(); - assertEquals(client.getVdcClient().getVdc(vdcRef), expected); + assertEquals(client.getVdcClient().getVdc(vdcURI), expected); } @Test public void testResponse400ForInvalidVdcId() { - URI vdcUri = URI.create(endpoint + "/vdc/NOTAUUID"); VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -106,22 +81,17 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .majorErrorCode(400) .minorErrorCode("BAD_REQUEST") .build(); - - Reference vdcRef = Reference.builder().href(vdcUri).build(); try { - client.getVdcClient().getVdc(vdcRef); + client.getVdcClient().getVdc(URI.create(endpoint + "/vdc/NOTAUUID")); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); - } catch (Exception e) { - fail("Should have thrown a VCloudDirectorException"); } } @Test public void testResponse403ForFakeVdcId() { - URI vdcUri = URI.create(endpoint + "/vdc/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() @@ -138,15 +108,11 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") .build(); - Reference vdcRef = Reference.builder().href(vdcUri).build(); - try { - client.getVdcClient().getVdc(vdcRef); + client.getVdcClient().getVdc(URI.create(endpoint + "/vdc/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee")); fail("Should give HTTP 403 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); - } catch (Exception e) { - fail("Should have thrown a VCloudDirectorException"); } } @@ -169,7 +135,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().captureVApp(vdcRef, params), expected); + assertEquals(client.getVdcClient().captureVApp(vdcURI, params), expected); } @Test(enabled = false) @@ -191,12 +157,10 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); try { - client.getVdcClient().captureVApp(vdcRef, null); + client.getVdcClient().captureVApp(vdcURI, null); fail("Should give HTTP 400 error"); } catch (VCloudDirectorException vde) { assertEquals(vde.getError(), expected); - } catch (Exception e) { - fail("Should have thrown a VCloudDirectorException"); } } @@ -219,7 +183,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().cloneVApp(vdcRef, params), expected); + assertEquals(client.getVdcClient().cloneVApp(vdcURI, params), expected); } @Test(enabled = false) @@ -241,7 +205,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().cloneVAppTemplate(vdcRef, params), expected); + assertEquals(client.getVdcClient().cloneVAppTemplate(vdcURI, params), expected); } @Test(enabled = false) @@ -263,7 +227,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().composeVApp(vdcRef, params), expected); + assertEquals(client.getVdcClient().composeVApp(vdcURI, params), expected); } @Test(enabled = false) @@ -285,7 +249,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().instantiateVApp(vdcRef, params), expected); + assertEquals(client.getVdcClient().instantiateVApp(vdcURI, params), expected); } @Test(enabled = false) @@ -307,7 +271,7 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().uploadVAppTemplate(vdcRef, params), expected); + assertEquals(client.getVdcClient().uploadVAppTemplate(vdcURI, params), expected); } @Test(enabled = false) @@ -329,27 +293,25 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .build(); - assertEquals(client.getVdcClient().createMedia(vdcRef, createMedia), expected); + assertEquals(client.getVdcClient().createMedia(vdcURI, createMedia), expected); } @Test(enabled = false) public void testGetMetadata() { URI vdcUri = URI.create(endpoint + "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f"); - VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("GET", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/metadata") - .acceptAnyMedia() - .httpRequestBuilder().build(), + .apiCommand("GET", "/vdc/e9cd3387-ac57-4d27-a481-9bee75e0690f/metadata") + .acceptAnyMedia() + .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() - .xmlFilePayload("/vdc/metadata.xml", VCloudDirectorMediaType.METADATA) - .httpResponseBuilder().build()); - - Reference mediaRef = Reference.builder().href(vdcUri).build(); - + .xmlFilePayload("/vdc/metadata.xml", VCloudDirectorMediaType.METADATA) + .httpResponseBuilder().build()); + Metadata expected = metadata(); - assertEquals(client.getVdcClient().getMetadataClient().getMetadata(mediaRef), expected); + assertEquals(client.getVdcClient().getMetadataClient().getMetadata(vdcUri), expected); } @Test(enabled = false) @@ -366,10 +328,8 @@ public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .httpResponseBuilder().build()); MetadataValue expected = metadataValue(); - - Reference mediaRef = Reference.builder().href(vdcUri).build(); - - assertEquals(client.getVdcClient().getMetadataClient().getMetadataValue(mediaRef, "key"), expected); + + assertEquals(client.getVdcClient().getMetadataClient().getMetadataValue(vdcUri, "key"), expected); } public static Vdc getVdc() { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java index a52922b44f..bce9cc1945 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VdcClientLiveTest.java @@ -18,30 +18,14 @@ */ package org.jclouds.vcloud.director.v1_5.features; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_GTE_0; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_FIELD_REQ_LIVE; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.OBJ_REQ_LIVE; -import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; +import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.*; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; import java.net.URI; -import org.jclouds.vcloud.director.v1_5.domain.CaptureVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.Checks; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.CloneVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.ComposeVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppParams; -import org.jclouds.vcloud.director.v1_5.domain.Metadata; -import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; -import org.jclouds.vcloud.director.v1_5.domain.Reference; -import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams; -import org.jclouds.vcloud.director.v1_5.domain.VApp; -import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate; -import org.jclouds.vcloud.director.v1_5.domain.Vdc; +import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -63,26 +47,21 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ protected VdcClient vdcClient; - private Reference vdcRef; + private URI vdcURI; @BeforeClass(inheritGroups = true) @Override public void setupRequiredClients() { - vdcRef = Reference.builder() - .type("application/vnd.vmware.vcloud.vdc+xml") - .name("") - .href(URI.create(endpoint+"/vdc/"+vdcId)) - .id(vdcId) - .build(); + vdcURI = URI.create(endpoint+"/vdc/"+vdcId); vdcClient = context.getApi().getVdcClient(); } @Test(testName = "GET /vdc/{id}") public void testGetVdc() { // required for testing - assertNotNull(vdcRef, String.format(REF_REQ_LIVE, VDC)); + assertNotNull(vdcURI, String.format(REF_REQ_LIVE, VDC)); - Vdc vdc = vdcClient.getVdc(vdcRef); + Vdc vdc = vdcClient.getVdc(vdcURI); assertNotNull(vdc, String.format(OBJ_REQ_LIVE, VDC)); assertTrue(!vdc.getDescription().equals("DO NOT USE"), "vDC isn't to be used for testing"); @@ -127,12 +106,12 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/captureVApp", enabled = false) public void testCaptureVApp() { Reference templateSource = null; // TODO: vApp reference - VAppTemplate template = vdcClient.captureVApp(vdcRef, CaptureVAppParams.builder() + VAppTemplate template = vdcClient.captureVApp(vdcURI, CaptureVAppParams.builder() .source(templateSource) - // TODO: test optional params - //.name("") - //.description("") - //.sections(sections) // TODO: ovf sections + // TODO: test optional params + //.name("") + //.description("") + //.sections(sections) // TODO: ovf sections .build()); Checks.checkVAppTemplate(template); @@ -144,21 +123,21 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/cloneVApp", enabled = false) public void testCloneVApp() { Reference vAppSource = null; // TODO: vApp reference - VApp vApp = vdcClient.cloneVApp(vdcRef, CloneVAppParams.builder() + VApp vApp = vdcClient.cloneVApp(vdcURI, CloneVAppParams.builder() .source(vAppSource) - // TODO: test optional params - //.name("") - //.description("") - //.deploy(true) - //.isSourceDelete(true) - //.powerOn(true) - //.instantiationParams(InstantiationParams.builder() - // .sections(sections) // TODO: ovf sections? various tests? - // .build()) - - // Reserved. Unimplemented params; may test eventually when implemented - //.vAppParent(vAppParentRef) - //.linkedClone(true) + // TODO: test optional params + //.name("") + //.description("") + //.deploy(true) + //.isSourceDelete(true) + //.powerOn(true) + //.instantiationParams(InstantiationParams.builder() + // .sections(sections) // TODO: ovf sections? various tests? + // .build()) + + // Reserved. Unimplemented params; may test eventually when implemented + //.vAppParent(vAppParentRef) + //.linkedClone(true) .build()); Checks.checkVApp(vApp); @@ -170,13 +149,13 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/cloneVAppTemplate", enabled = false) public void testCloneVAppTemplate() { Reference templateSource = null; // TODO: vAppTemplate reference - VAppTemplate template = vdcClient.cloneVAppTemplate(vdcRef, CloneVAppTemplateParams.builder() + VAppTemplate template = vdcClient.cloneVAppTemplate(vdcURI, CloneVAppTemplateParams.builder() .source(templateSource) - // TODO: test optional params - //.name("") - //.description("") - //.isSourceDelete(true) - //.sections(sections) // TODO: ovf sections + // TODO: test optional params + //.name("") + //.description("") + //.isSourceDelete(true) + //.sections(sections) // TODO: ovf sections .build()); Checks.checkVAppTemplate(template); @@ -187,7 +166,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/composeVApp", enabled = false) public void testComposeVApp() { - VApp vApp = vdcClient.composeVApp(vdcRef, ComposeVAppParams.builder() + VApp vApp = vdcClient.composeVApp(vdcURI, ComposeVAppParams.builder() // TODO: test optional params //.name("") //.description("") @@ -197,7 +176,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { //.instantiationParams(InstantiationParams.builder() // .sections(sections) // TODO: ovf sections? various tests? // .build()) - + // Reserved. Unimplemented params; may test eventually when implemented //.linkedClone() .build()); @@ -211,12 +190,12 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/instantiateVAppTemplate", enabled = false) public void testInstantiateVAppTemplate() { Reference templateSource = null; // TODO: vApp or vAppTemplate reference - VApp vApp = vdcClient.instantiateVApp(vdcRef, InstantiateVAppParams.builder() + VApp vApp = vdcClient.instantiateVApp(vdcURI, InstantiateVAppParams.builder() .source(templateSource) - // TODO: test optional params - //.name("") - //.description("") - //.isSourceDelete(true) + // TODO: test optional params + //.name("") + //.description("") + //.isSourceDelete(true) .build()); Checks.checkVApp(vApp); @@ -227,7 +206,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "POST /vdc/{id}/action/uploadVAppTemplate", enabled = false) public void testUploadVAppTemplate() { - VAppTemplate template = vdcClient.uploadVAppTemplate(vdcRef, UploadVAppTemplateParams.builder() + VAppTemplate template = vdcClient.uploadVAppTemplate(vdcURI, UploadVAppTemplateParams.builder() // TODO: test optional params //.name("") //.description("") @@ -243,7 +222,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /network/{id}/metadata", enabled = false) public void testGetMetadata() { - Metadata metadata = vdcClient.getMetadataClient().getMetadata(vdcRef); + Metadata metadata = vdcClient.getMetadataClient().getMetadata(vdcURI); // required for testing assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), String.format(OBJ_FIELD_REQ_LIVE, VDC, "metadata.entries")); @@ -253,7 +232,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest { @Test(testName = "GET /network/{id}/metadata/{key}", enabled = false) public void testGetMetadataValue() { - MetadataValue metadataValue = vdcClient.getMetadataClient().getMetadataValue(vdcRef, "key"); + MetadataValue metadataValue = vdcClient.getMetadataClient().getMetadataValue(vdcURI, "key"); Checks.checkMetadataValueFor(VDC, metadataValue); } diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorClientLiveTest.java index 353e525046..1a4b2cc10c 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/internal/BaseVCloudDirectorClientLiveTest.java @@ -18,6 +18,7 @@ */ package org.jclouds.vcloud.director.v1_5.internal; +import java.net.URI; import java.util.Properties; import org.jclouds.compute.BaseVersionedServiceLiveTest; @@ -28,7 +29,7 @@ import org.jclouds.rest.RestContextFactory; import org.jclouds.sshj.config.SshjSshClientModule; import org.jclouds.vcloud.director.v1_5.VCloudDirectorAsyncClient; import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; -import org.jclouds.vcloud.director.v1_5.domain.URISupplier; +import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.predicates.TaskSuccess; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -74,7 +75,7 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ public abstract void setupRequiredClients(); /** Injected by {@link #setupContext} */ - public Predicate retryTaskSuccess; + public Predicate retryTaskSuccess; @Override @BeforeClass(groups = { "live" }) @@ -99,7 +100,7 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ ImmutableSet. of(new Log4JLoggingModule(), new SshjSshClientModule()), overrides); TaskSuccess taskSuccess = context.utils().injector().getInstance(TaskSuccess.class); - retryTaskSuccess = new RetryablePredicate(taskSuccess, 1000L); + retryTaskSuccess = new RetryablePredicate(taskSuccess, 1000L); } protected void tearDown() { From 3ce6051e515727c76477a30666e7894cf519339e Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 09:21:50 +0000 Subject: [PATCH 04/13] VCloud Director 1.5: Adjusting misleading comments and consistently using @XmlReference only for substitution groups --- .../director/v1_5/domain/CapacityType.java | 2 +- .../v1_5/domain/CapacityWithUsage.java | 2 +- .../v1_5/domain/CaptureVAppParams.java | 3 +- .../vcloud/director/v1_5/domain/Catalog.java | 9 ++++ .../director/v1_5/domain/CatalogItem.java | 2 +- .../director/v1_5/domain/CatalogsList.java | 2 +- .../v1_5/domain/CloneMediaParams.java | 2 +- .../director/v1_5/domain/CloneVAppParams.java | 44 +++++-------------- .../v1_5/domain/CloneVAppTemplateParams.java | 2 +- .../v1_5/domain/ComposeVAppParams.java | 2 +- .../director/v1_5/domain/ComputeCapacity.java | 2 +- .../director/v1_5/domain/FilesList.java | 2 +- .../director/v1_5/domain/FirewallService.java | 2 +- .../domain/GuestCustomizationSection.java | 2 +- .../v1_5/domain/InstantiateVAppParams.java | 2 +- .../domain/InstantiateVAppParamsType.java | 10 ++--- .../domain/InstantiateVAppTemplateParams.java | 2 +- .../v1_5/domain/InstantiationParams.java | 2 +- .../director/v1_5/domain/IpAddresses.java | 4 +- .../vcloud/director/v1_5/domain/IpRange.java | 2 +- .../vcloud/director/v1_5/domain/IpRanges.java | 8 ++-- .../vcloud/director/v1_5/domain/IpScope.java | 2 +- .../v1_5/domain/IpsecVpnRemotePeer.java | 2 +- .../director/v1_5/domain/IpsecVpnService.java | 17 ++++--- .../v1_5/domain/IpsecVpnThirdPartyPeer.java | 2 +- .../director/v1_5/domain/IpsecVpnTunnel.java | 44 +++---------------- .../director/v1_5/domain/MetadataEntry.java | 2 +- .../vcloud/director/v1_5/domain/NatRule.java | 2 +- .../director/v1_5/domain/NatVmRule.java | 2 +- .../v1_5/domain/NetworkAssignment.java | 2 +- .../v1_5/domain/NetworkConfiguration.java | 2 +- .../v1_5/domain/NetworkConnection.java | 2 +- .../v1_5/domain/NetworkConnectionSection.java | 3 +- .../director/v1_5/domain/NetworkFeatures.java | 16 +++---- .../v1_5/domain/NetworkServiceType.java | 20 +++------ .../director/v1_5/domain/NetworkType.java | 2 +- .../vcloud/director/v1_5/domain/Org.java | 2 +- .../vcloud/director/v1_5/domain/OrgList.java | 2 +- .../vcloud/director/v1_5/domain/Owner.java | 2 +- .../director/v1_5/domain/ParamsType.java | 2 +- .../v1_5/domain/ProductSectionList.java | 2 +- .../director/v1_5/domain/ReferenceType.java | 5 +++ .../v1_5/domain/ResourceEntities.java | 2 +- .../director/v1_5/domain/RouterInfo.java | 2 +- .../vcloud/director/v1_5/domain/Session.java | 2 +- .../domain/SourcedCompositionItemParam.java | 2 +- .../director/v1_5/domain/StaticRoute.java | 2 +- .../v1_5/domain/StaticRoutingService.java | 2 +- .../domain/SupportedHardwareVersions.java | 2 +- .../v1_5/domain/SyslogServerSettings.java | 2 +- .../vcloud/director/v1_5/domain/Task.java | 2 +- .../director/v1_5/domain/TasksInProgress.java | 2 +- .../director/v1_5/domain/TasksList.java | 2 +- .../v1_5/domain/VAppCreationParamsType.java | 2 +- .../director/v1_5/domain/VAppTemplate.java | 4 +- .../director/v1_5/domain/ovf/DiskSection.java | 5 ++- .../v1_5/domain/query/CatalogReferences.java | 16 +++---- .../v1_5/domain/query/ContainerType.java | 2 +- .../director/v1_5/domain/query/QueryList.java | 2 +- .../query/QueryResultCatalogRecord.java | 2 +- .../query/QueryResultNetworkRecord.java | 2 +- .../domain/query/QueryResultRecordType.java | 5 ++- .../domain/query/QueryResultReferences.java | 6 +-- .../VAppTemplateClientExpectTest.java | 2 +- 64 files changed, 138 insertions(+), 175 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityType.java index 887410d52e..b5336f9370 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityType.java @@ -119,7 +119,7 @@ public class CapacityType> { } protected CapacityType() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Units", required = true) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityWithUsage.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityWithUsage.java index 2c4ad4dd91..75e7275981 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityWithUsage.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CapacityWithUsage.java @@ -135,7 +135,7 @@ public class CapacityWithUsage extends CapacityType } private CapacityWithUsage() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Used") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java index 0383672f43..da46e57c45 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java @@ -24,6 +24,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; + import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; @@ -125,7 +126,7 @@ public class CaptureVAppParams } private CaptureVAppParams() { - // For JAXB and builder use + // for JAXB } private CaptureVAppParams(Set> sections) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java index 7454d952d1..d6abd466da 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java @@ -174,9 +174,18 @@ public class Catalog extends CatalogType { } } +<<<<<<< HEAD public Catalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Owner owner, CatalogItems catalogItems, Boolean published) { super(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, published); +======= + private Catalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, + String name, Entity owner, CatalogItems catalogItems, Boolean published) { + super(href, type, links, description, tasksInProgress, id, name); + this.owner = owner; + this.catalogItems = catalogItems; + this.isPublished = published; +>>>>>>> VCloud Director 1.5: Adjusting misleading comments and consistently using @XmlReference only for substitution groups } @SuppressWarnings("unused") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java index db8be1d67a..7ec0a2ef28 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogItem.java @@ -178,7 +178,7 @@ public class CatalogItem extends EntityType { } private CatalogItem() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Entity", required = true) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java index bf023faf13..f15573de67 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CatalogsList.java @@ -78,7 +78,7 @@ public class CatalogsList { } private CatalogsList() { - // For JAXB and builder use + // for JAXB } private CatalogsList(Set tasks) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneMediaParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneMediaParams.java index e96cc68b01..0baf82eafe 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneMediaParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneMediaParams.java @@ -129,7 +129,7 @@ public class CloneMediaParams } private CloneMediaParams() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java index 8ccfc0575a..7ec768d529 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppParams.java @@ -44,10 +44,8 @@ import com.google.common.base.Objects; */ @XmlType(name = "CloneVAppParams") public class CloneVAppParams - extends InstantiateVAppParamsType + extends InstantiateVAppParamsType { -{ - @SuppressWarnings("unchecked") public static Builder builder() { return new Builder(); } @@ -58,10 +56,8 @@ public class CloneVAppParams public static class Builder extends InstantiateVAppParamsType.Builder { - public CloneVAppParams build() { - CloneVAppParams cloneVAppParams = new CloneVAppParams(); - return cloneVAppParams; + return new CloneVAppParams(description, name, vAppParent, instantiationParams, deploy, powerOn, source, isSourceDelete, linkedClone); } /** @@ -97,7 +93,7 @@ public class CloneVAppParams } /** - * @see VAppCreationParamsType#getDeploy() + * @see VAppCreationParamsType#isDeploy() */ public Builder deploy(Boolean deploy) { super.deploy(deploy); @@ -105,7 +101,7 @@ public class CloneVAppParams } /** - * @see VAppCreationParamsType#getPowerOn() + * @see VAppCreationParamsType#isPowerOn() */ public Builder powerOn(Boolean powerOn) { super.powerOn(powerOn); @@ -121,7 +117,7 @@ public class CloneVAppParams } /** - * @see InstantiateVAppParamsType#getIsSourceDelete() + * @see InstantiateVAppParamsType#isSourceDelete() */ public Builder isSourceDelete(Boolean isSourceDelete) { super.isSourceDelete(isSourceDelete); @@ -129,7 +125,7 @@ public class CloneVAppParams } /** - * @see InstantiateVAppParamsType#getLinkedClone() + * @see InstantiateVAppParamsType#isLinkedClone() */ public Builder linkedClone(Boolean linkedClone) { super.linkedClone(linkedClone); @@ -146,28 +142,12 @@ public class CloneVAppParams } } + private CloneVAppParams(String description, String name, Reference vAppParent, InstantiationParams instantiationParams, Boolean deploy, Boolean powerOn, Reference source, Boolean sourceDelete, Boolean linkedClone) { + super(description, name, vAppParent, instantiationParams, deploy, powerOn, source, sourceDelete, linkedClone); + } + private CloneVAppParams() { - // For JAXB and builder use + // For JAXB } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - CloneVAppParams that = CloneVAppParams.class.cast(o); - return super.equals(that); - } - - @Override - public int hashCode() { - return super.hashCode() + Objects.hashCode(""); - } - - @Override - public String toString() { - return Objects.toStringHelper("").toString(); - } - -} + } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppTemplateParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppTemplateParams.java index 14a61345ab..44d77692a8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppTemplateParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CloneVAppTemplateParams.java @@ -111,7 +111,7 @@ public class CloneVAppTemplateParams } private CloneVAppTemplateParams() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java index ee3a4574fc..2d6b3ad154 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComposeVAppParams.java @@ -136,7 +136,7 @@ public class ComposeVAppParams } private ComposeVAppParams() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComputeCapacity.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComputeCapacity.java index 5d0556740c..0415fa2509 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComputeCapacity.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ComputeCapacity.java @@ -99,7 +99,7 @@ public class ComputeCapacity { } private ComputeCapacity() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java index 4993ac68b6..6a46d59f97 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FilesList.java @@ -98,7 +98,7 @@ public class FilesList { } private FilesList() { - // For JAXB and builder use + // for JAXB } private FilesList(List files) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java index 5e261c6633..6ed7c33c7b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java @@ -128,7 +128,7 @@ public class FirewallService extends NetworkServiceType { } private FirewallService() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "DefaultAction") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java index 4a355a029a..d1977f932b 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/GuestCustomizationSection.java @@ -341,7 +341,7 @@ public class GuestCustomizationSection extends SectionType> } } - public InstantiateVAppParamsType(String description, String name, Reference vAppParent, InstantiationParams instantiationParams, + protected InstantiateVAppParamsType(String description, String name, Reference vAppParent, InstantiationParams instantiationParams, Boolean deploy, Boolean powerOn, Reference source, Boolean sourceDelete, Boolean linkedClone) { super(description, name, vAppParent, instantiationParams, deploy, powerOn); this.source = source; @@ -180,16 +180,16 @@ public class InstantiateVAppParamsType> } protected InstantiateVAppParamsType() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Source", required = true) - protected Reference source; + private Reference source; @XmlElement(name = "IsSourceDelete") - protected Boolean isSourceDelete; + private Boolean isSourceDelete; @XmlAttribute - protected Boolean linkedClone; + private Boolean linkedClone; /** * Gets the value of the source property. diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiateVAppTemplateParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiateVAppTemplateParams.java index cedbfba1cc..f51ae78286 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiateVAppTemplateParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiateVAppTemplateParams.java @@ -148,7 +148,7 @@ public class InstantiateVAppTemplateParams } private InstantiateVAppTemplateParams() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java index 53bb6755e6..0b98e78e39 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java @@ -98,7 +98,7 @@ public class InstantiationParams { } private InstantiationParams() { - // For JAXB and builder use + // for JAXB } private InstantiationParams(Set> sections) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java index c6b2314fd6..61343c8494 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpAddresses.java @@ -53,7 +53,7 @@ public class IpAddresses { * @see IpAddresses#getIpAddresses() */ public Builder ipAddresses(Set ipAddresses) { - this.ipAddresses.addAll(checkNotNull(ipAddresses, "ipAddresses")); + this.ipAddresses = Sets.newLinkedHashSet(checkNotNull(ipAddresses, "ipAddresses")); return this; } @@ -75,7 +75,7 @@ public class IpAddresses { } private IpAddresses() { - // For JAXB and builder use + // for JAXB } private IpAddresses(Set orgs) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRange.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRange.java index 43941e6981..4d620b9ee3 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRange.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRange.java @@ -72,7 +72,7 @@ public class IpRange { } private IpRange() { - // For JAXB and builder use + // for JAXB } private IpRange(String startAddress, String endAddress) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java index 116873b042..1e074bb507 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpRanges.java @@ -22,9 +22,9 @@ import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; -import java.util.LinkedHashSet; import java.util.Set; -import javax.xml.bind.annotation.XmlElementRef; + +import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import com.google.common.base.Objects; @@ -76,14 +76,14 @@ public class IpRanges { } private IpRanges() { - // For JAXB and builder use + // for JAXB } private IpRanges(Set ipRanges) { this.ipRanges = ImmutableSet.copyOf(ipRanges); } - @XmlElementRef + @XmlElement(name = "IpRange") private Set ipRanges = Sets.newLinkedHashSet(); public Set getIpRanges() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpScope.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpScope.java index c1acd7ff5b..109739dbdf 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpScope.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpScope.java @@ -132,7 +132,7 @@ public class IpScope { } private IpScope() { - // For JAXB and builder use + // For JAXB } public IpScope(boolean inherited, String gateway, String netmask, String dns1, String dns2, String dnsSuffix, diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java index 46f7631792..652ed93981 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnRemotePeer.java @@ -133,7 +133,7 @@ public class IpsecVpnRemotePeer extends IpsecVpnManagedPeerType { - @SuppressWarnings("unchecked") + public static Builder builder() { return new Builder(); } @@ -128,7 +128,7 @@ public class IpsecVpnService extends NetworkServiceType { } private IpsecVpnService() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "ExternalIpAddress") @@ -172,24 +172,27 @@ public class IpsecVpnService extends NetworkServiceType { if (o == null || getClass() != o.getClass()) return false; IpsecVpnService that = IpsecVpnService.class.cast(o); - return equal(externalIpAddress, that.externalIpAddress) && + return super.equals(that) && + equal(externalIpAddress, that.externalIpAddress) && equal(publicIpAddress, that.publicIpAddress) && equal(ipsecVpnTunnels, that.ipsecVpnTunnels); } @Override public int hashCode() { - return Objects.hashCode(externalIpAddress, + return Objects.hashCode( + super.hashCode(), + externalIpAddress, publicIpAddress, ipsecVpnTunnels); } @Override - public String toString() { - return Objects.toStringHelper("") + protected Objects.ToStringHelper string() { + return super.string() .add("externalIpAddress", externalIpAddress) .add("publicIpAddress", publicIpAddress) - .add("ipsecVpnTunnels", ipsecVpnTunnels).toString(); + .add("ipsecVpnTunnels", ipsecVpnTunnels); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java index d9ccd8d015..e4813a8aa6 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnThirdPartyPeer.java @@ -63,6 +63,6 @@ public class IpsecVpnThirdPartyPeer extends IpsecVpnUnmanagedPeerType ipsecVpnPeer; private String peerIpAddress; private String peerNetworkAddress; private String peerNetworkMask; @@ -121,7 +118,7 @@ public class IpsecVpnTunnel /** * @see IpsecVpnTunnel#getIpsecVpnPeer() */ - public Builder ipsecVpnPeer(IpsecVpnPeerType ipsecVpnPeer) { + public Builder ipsecVpnPeer(IpsecVpnPeerType ipsecVpnPeer) { this.ipsecVpnPeer = ipsecVpnPeer; return this; } @@ -221,7 +218,7 @@ public class IpsecVpnTunnel } } - private IpsecVpnTunnel(String name, String description, IpsecVpnPeerType ipsecVpnPeer, String peerIpAddress, + private IpsecVpnTunnel(String name, String description, IpsecVpnPeerType ipsecVpnPeer, String peerIpAddress, String peerNetworkAddress, String peerNetworkMask, String sharedSecret, String encryptionProtocol, int mtu, boolean enabled, Boolean operational, String errorDetails) { this.name = name; this.description = description; @@ -238,7 +235,7 @@ public class IpsecVpnTunnel } private IpsecVpnTunnel() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Name", required = true) @@ -246,7 +243,7 @@ public class IpsecVpnTunnel @XmlElement(name = "Description") protected String description; @XmlElementRef - protected IpsecVpnPeerType ipsecVpnPeer; + protected IpsecVpnPeerType ipsecVpnPeer; @XmlElement(name = "PeerIpAddress", required = true) protected String peerIpAddress; @XmlElement(name = "PeerNetworkAddress", required = true) @@ -268,9 +265,6 @@ public class IpsecVpnTunnel /** * Gets the value of the name property. - * - * @return possible object is - * {@link String } */ public String getName() { return name; @@ -278,9 +272,6 @@ public class IpsecVpnTunnel /** * Gets the value of the description property. - * - * @return possible object is - * {@link String } */ public String getDescription() { return description; @@ -289,15 +280,12 @@ public class IpsecVpnTunnel /** * Details about the peer network. */ - public IpsecVpnPeerType getIpsecVpnPeer() { + public IpsecVpnPeerType getIpsecVpnPeer() { return ipsecVpnPeer; } /** * Gets the value of the peerIpAddress property. - * - * @return possible object is - * {@link String } */ public String getPeerIpAddress() { return peerIpAddress; @@ -305,9 +293,6 @@ public class IpsecVpnTunnel /** * Gets the value of the peerNetworkAddress property. - * - * @return possible object is - * {@link String } */ public String getPeerNetworkAddress() { return peerNetworkAddress; @@ -315,9 +300,6 @@ public class IpsecVpnTunnel /** * Gets the value of the peerNetworkMask property. - * - * @return possible object is - * {@link String } */ public String getPeerNetworkMask() { return peerNetworkMask; @@ -325,9 +307,6 @@ public class IpsecVpnTunnel /** * Gets the value of the sharedSecret property. - * - * @return possible object is - * {@link String } */ public String getSharedSecret() { return sharedSecret; @@ -335,9 +314,6 @@ public class IpsecVpnTunnel /** * Gets the value of the encryptionProtocol property. - * - * @return possible object is - * {@link String } */ public String getEncryptionProtocol() { return encryptionProtocol; @@ -359,9 +335,6 @@ public class IpsecVpnTunnel /** * Gets the value of the isOperational property. - * - * @return possible object is - * {@link Boolean } */ public Boolean isOperational() { return isOperational; @@ -369,9 +342,6 @@ public class IpsecVpnTunnel /** * Gets the value of the errorDetails property. - * - * @return possible object is - * {@link String } */ public String getErrorDetails() { return errorDetails; diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java index aa4193abd4..c9d08b7fe8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/MetadataEntry.java @@ -140,7 +140,7 @@ public class MetadataEntry extends ResourceType { } private MetadataEntry() { - // For JAXB and builder use + // for JAXB } public MetadataEntry(URI href, String type, Set links, String key, String value) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java index 11deef91a7..1fe1625f27 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatRule.java @@ -141,7 +141,7 @@ public class NatRule { } private NatRule() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Description") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java index 06695b48ed..8dae8887d1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NatVmRule.java @@ -154,7 +154,7 @@ public class NatVmRule { } private NatVmRule() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkAssignment.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkAssignment.java index 9bee51fce8..43fe6924d7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkAssignment.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkAssignment.java @@ -97,7 +97,7 @@ public class NetworkAssignment } private NetworkAssignment() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java index 5d7caedda8..869cc8ad59 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConfiguration.java @@ -132,7 +132,7 @@ public class NetworkConfiguration { } private NetworkConfiguration() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "IpScope") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnection.java index 364b79ee34..d69ec2a571 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnection.java @@ -180,7 +180,7 @@ public class NetworkConnection { } private NetworkConnection() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java index 63431c526b..a852ceed2f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkConnectionSection.java @@ -260,7 +260,8 @@ public class NetworkConnectionSection extends SectionType services = Sets.newLinkedHashSet(); + private Set> services = Sets.newLinkedHashSet(); /** * @see NetworkFeatures#getNetworkServices() */ - public Builder services(Set services) { + public Builder services(Set> services) { this.services = Sets.newLinkedHashSet(checkNotNull(services, "services")); return this; } @@ -62,7 +62,7 @@ public class NetworkFeatures { /** * @see NetworkFeatures#getNetworkServices() */ - public Builder service(NetworkServiceType service) { + public Builder service(NetworkServiceType service) { services.add(checkNotNull(service, "service")); return this; } @@ -77,21 +77,21 @@ public class NetworkFeatures { } private NetworkFeatures() { - // For JAXB and builder use + // for JAXB } - public NetworkFeatures(Set services) { + public NetworkFeatures(Set> services) { this.services = ImmutableSet.copyOf(services); } @XmlElementRef - private Set services = Sets.newLinkedHashSet(); + private Set> services = Sets.newLinkedHashSet(); /** * @return a Network service. May be any of DhcpService, NatService, IpsecVpnService, * DhcpService, or StaticRoutingService. */ - public Set getNetworkServices() { + public Set> getNetworkServices() { return Collections.unmodifiableSet(services); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java index 58a814c506..79da3f27e9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkServiceType.java @@ -28,6 +28,7 @@ import com.google.common.base.Objects; /** * Represents a network service * + * @author danikov * @author Adam Lowe */ @XmlSeeAlso({ @@ -38,17 +39,10 @@ import com.google.common.base.Objects; StaticRoutingService.class, NatService.class }) -public class NetworkServiceType> { +public abstract class NetworkServiceType> { + public abstract Builder toBuilder(); - public static Builder builder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder().fromNetworkServiceType(this); - } - - public static class Builder> { + public static abstract class Builder> { protected boolean isEnabled; /** @@ -59,9 +53,7 @@ public class NetworkServiceType> { return this; } - public NetworkServiceType build() { - return new NetworkServiceType(isEnabled); - } + public abstract NetworkServiceType build(); public Builder fromNetworkServiceType(NetworkServiceType in) { return enabled(in.isEnabled()); @@ -73,7 +65,7 @@ public class NetworkServiceType> { } protected NetworkServiceType() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "IsEnabled") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java index 54052b9b18..bd9a213c9c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/NetworkType.java @@ -152,7 +152,7 @@ public class NetworkType> extends EntityType { } protected NetworkType() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Configuration") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java index 6c2713d061..7e643bd648 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Org.java @@ -183,7 +183,7 @@ public class Org extends EntityType { } private Org() { - // For JAXB and builder use + // for JAXB } public Org(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, String fullName, Boolean enabled) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java index 5b107602e6..80f4cd1fa0 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgList.java @@ -80,7 +80,7 @@ public class OrgList { } private OrgList() { - // For JAXB and builder use + // for JAXB } private OrgList(Set orgs) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java index 2736f5af3f..0fe6fc6662 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java @@ -136,7 +136,7 @@ public class Owner @SuppressWarnings("unused") private Owner() { - // For JAXB and builder use + // for JAXB } public Owner(URI href, String type, Set links, Reference user) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ParamsType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ParamsType.java index d2967ac6e8..a76364559d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ParamsType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ParamsType.java @@ -111,7 +111,7 @@ public class ParamsType> { } protected ParamsType() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java index 7deb414781..f0d731c4e7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ProductSectionList.java @@ -139,7 +139,7 @@ public class ProductSectionList } private ProductSectionList() { - // For JAXB and builder use + // for JAXB } private ProductSectionList(Set productSections) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java index f6a340cdc3..314890c5fe 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ReferenceType.java @@ -23,6 +23,7 @@ import static com.google.common.base.Objects.equal; import java.net.URI; import java.util.Map; import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlSeeAlso; import com.google.common.base.Objects; import com.google.common.base.Objects.ToStringHelper; @@ -38,6 +39,10 @@ import com.google.common.base.Objects.ToStringHelper; * * @author grkvlt@apache.org */ +@XmlSeeAlso({ + CatalogReference.class, + Reference.class +}) public class ReferenceType> implements URISupplier { public static > Builder builder() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java index f45870831a..d4fc25c893 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java @@ -96,7 +96,7 @@ public class ResourceEntities { } private ResourceEntities() { - // For JAXB and builder use + // for JAXB } private ResourceEntities(Set resourceEntity) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RouterInfo.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RouterInfo.java index 29b32fb9e3..ed474d92c9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RouterInfo.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/RouterInfo.java @@ -62,7 +62,7 @@ public class RouterInfo { } private RouterInfo() { - // For JAXB and builder use + // for JAXB } private RouterInfo(String externalIp) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java index a03d3d58a9..db9ef9cbfc 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Session.java @@ -110,7 +110,7 @@ public class Session { } private Session() { - // For JAXB and builder use + // for JAXB } private Session(String user, String org, URI href, Set links) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java index f1b7d41cbd..b92176f2f7 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java @@ -144,7 +144,7 @@ public class SourcedCompositionItemParam { } private SourcedCompositionItemParam() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "Source", required = true) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java index 8429af77cc..0908cd99e9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java @@ -126,7 +126,7 @@ public class StaticRoute { } private StaticRoute() { - // For JAXB and builder use + // for JAXB } private StaticRoute(String _interface) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java index a5648c2c82..dbb6b3dee1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java @@ -104,7 +104,7 @@ public class StaticRoutingService extends NetworkServiceType supportedHardwareVersions) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SyslogServerSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SyslogServerSettings.java index ffbb8c536f..5ebac9170f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SyslogServerSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SyslogServerSettings.java @@ -76,7 +76,7 @@ public class SyslogServerSettings { } private SyslogServerSettings() { - // For JAXB and builder use + // for JAXB } @XmlElement(name = "SyslogServerIp1") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java index a791f8dcd8..e571e84c46 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Task.java @@ -295,7 +295,7 @@ public class Task extends EntityType { } private Task() { - // For JAXB and builder use + // for JAXB } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java index 6ac91c6d17..b0a002f81f 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java @@ -75,7 +75,7 @@ public class TasksInProgress { } private TasksInProgress() { - // For JAXB and builder use + // for JAXB } private TasksInProgress(Collection tasks) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java index dc3069972a..3fc6620a06 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksList.java @@ -161,7 +161,7 @@ public class TasksList extends EntityType { } protected TasksList() { - // For JAXB and builder use + // for JAXB } public TasksList(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Set tasks) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppCreationParamsType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppCreationParamsType.java index 8843b7d125..2b5c6d8923 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppCreationParamsType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppCreationParamsType.java @@ -172,7 +172,7 @@ public class VAppCreationParamsType> } protected VAppCreationParamsType() { - // For JAXB and builder use + // for JAXB } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index 3c6752862f..9c811c02ad 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -254,9 +254,9 @@ public class VAppTemplate extends ResourceEntityType { } } - @XmlElementRef + @XmlElement(name = "Owner") protected Owner owner; - @XmlElementRef + @XmlElement(name = "Children") protected VAppTemplateChildren children = VAppTemplateChildren.builder().build(); @XmlElementRef protected Set> sections = Sets.newLinkedHashSet(); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DiskSection.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DiskSection.java index 79805f9ecb..108bfdb505 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DiskSection.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/DiskSection.java @@ -22,7 +22,8 @@ import static com.google.common.base.Preconditions.checkNotNull; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.VCLOUD_OVF_NS; import java.util.Set; -import javax.xml.bind.annotation.XmlElementRef; + +import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @@ -116,7 +117,7 @@ public class DiskSection extends SectionType { } - @XmlElementRef + @XmlElement(name = "Disk") private Set disks; private DiskSection(@Nullable String info, @Nullable Boolean required, Iterable disks) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java index dba4c37e9c..c5b0d54467 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/CatalogReferences.java @@ -77,7 +77,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getName() + * @see CatalogReferences#getName() */ @Override public Builder name(String name) { @@ -86,7 +86,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getPage() + * @see CatalogReferences#getPage() */ @Override public Builder page(Integer page) { @@ -95,7 +95,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getPageSize() + * @see CatalogReferences#getPageSize() */ @Override public Builder pageSize(Integer pageSize) { @@ -104,7 +104,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getTotal() + * @see CatalogReferences#getTotal() */ @Override public Builder total(Long total) { @@ -113,7 +113,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getHref() + * @see CatalogReferences#getHref() */ @Override public Builder href(URI href) { @@ -131,7 +131,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getLinks() + * @see CatalogReferences#getLinks() */ @Override public Builder links(Set links) { @@ -140,7 +140,7 @@ public class CatalogReferences extends QueryResultReferences { } /** - * @see CatalogReference#getLinks() + * @see CatalogReferences#getLinks() */ @Override public Builder link(Link link) { @@ -163,6 +163,6 @@ public class CatalogReferences extends QueryResultReferences { } protected CatalogReferences() { - // For JAXB and builder use + // for JAXB } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java index 6ff53f823c..55d555be0c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/ContainerType.java @@ -161,7 +161,7 @@ public class ContainerType> extends ResourceType { } protected ContainerType() { - // For JAXB and builder use + // for JAXB } /** diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryList.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryList.java index 71e934ea95..7fcd8cc107 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryList.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryList.java @@ -71,7 +71,7 @@ public class QueryList extends ContainerType { } private QueryList() { - // For JAXB and builder use + // for JAXB } @Override diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java index 2f134d5e8e..a83c2d68c8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultCatalogRecord.java @@ -252,7 +252,7 @@ public class QueryResultCatalogRecord extends QueryResultRecordType> { public static > Builder builder() { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java index c557d0ca1b..0b46128f2c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/query/QueryResultReferences.java @@ -172,13 +172,11 @@ public class QueryResultReferences> extends Container } protected QueryResultReferences() { - // For JAXB and builder use + // for JAXB } // NOTE add other types as they are used. probably not the best way to do this. - @XmlElementRefs({ - @XmlElementRef(type = CatalogReference.class) - }) + @XmlElementRef private Set references = Sets.newLinkedHashSet(); /** diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java index 77ee717bb9..01e2eb1a18 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java @@ -395,7 +395,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx .build()) .parentNetwork(Reference.builder().href(URI.create("http://vcloud.example.com/api/v1.0/network/54")).type("application/vnd.vmware.vcloud.network+xml").name("Internet").build()) .fenceMode("natRouted") - .features(NetworkFeatures.builder().services(ImmutableSet.of(firewallService, natService)).build()) + .features(NetworkFeatures.builder().services(ImmutableSet.of(firewallService, natService)).build()) .build(); return NetworkConfigSection.builder() From 200fc859652d58593079c25c5d32df6ceaef9b11 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 09:24:39 +0000 Subject: [PATCH 05/13] VCloud Director 1.5: Adjusting misleading comments refering to JAXBElements --- .../v1_5/domain/CaptureVAppParams.java | 37 +++++++++-------- .../v1_5/domain/InstantiationParams.java | 40 +++++++++---------- .../director/v1_5/domain/VAppTemplate.java | 36 ++++++++--------- 3 files changed, 55 insertions(+), 58 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java index da46e57c45..8398a6df89 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java @@ -25,7 +25,6 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Collections; import java.util.Set; -import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlType; @@ -154,24 +153,24 @@ public class CaptureVAppParams * Gets the value of the section property. * * Objects of the following type(s) are allowed in the list - * {@link JAXBElement }{@code <}{@link Section> }{@code >} - * {@link JAXBElement }{@code <}{@link VirtualHardwareSection > }{@code >} - * {@link JAXBElement }{@code <}{@link LeaseSettingsSection> }{@code >} - * {@link JAXBElement }{@code <}{@link EulaSection> }{@code >} - * {@link JAXBElement }{@code <}{@link RuntimeInfoSection> }{@code >} - * {@link JAXBElement }{@code <}{@link AnnotationSection> }{@code >} - * {@link JAXBElement }{@code <}{@link DeploymentOptionSection > }{@code >} - * {@link JAXBElement }{@code <}{@link StartupSection> }{@code >} - * {@link JAXBElement }{@code <}{@link ResourceAllocationSection> }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConnectionSection> }{@code >} - * {@link JAXBElement }{@code <}{@link CustomizationSection> }{@code >} - * {@link JAXBElement }{@code <}{@link ProductSection > }{@code >} - * {@link JAXBElement }{@code <}{@link GuestCustomizationSection> }{@code >} - * {@link JAXBElement }{@code <}{@link OperatingSystemSection > }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConfigSection> }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkSection > }{@code >} - * {@link JAXBElement }{@code <}{@link DiskSection > }{@code >} - * {@link JAXBElement }{@code <}{@link InstallSection> }{@code >} + * {@code <}{@link Section> }{@code >} + * {@code <}{@link VirtualHardwareSection > }{@code >} + * {@code <}{@link LeaseSettingsSection> }{@code >} + * {@code <}{@link EulaSection> }{@code >} + * {@code <}{@link RuntimeInfoSection> }{@code >} + * {@code <}{@link AnnotationSection> }{@code >} + * {@code <}{@link DeploymentOptionSection > }{@code >} + * {@code <}{@link StartupSection> }{@code >} + * {@code <}{@link ResourceAllocationSection> }{@code >} + * {@code <}{@link NetworkConnectionSection> }{@code >} + * {@code <}{@link CustomizationSection> }{@code >} + * {@code <}{@link ProductSection > }{@code >} + * {@code <}{@link GuestCustomizationSection> }{@code >} + * {@code <}{@link OperatingSystemSection > }{@code >} + * {@code <}{@link NetworkConfigSection> }{@code >} + * {@code <}{@link NetworkSection > }{@code >} + * {@code <}{@link DiskSection > }{@code >} + * {@code <}{@link InstallSection> }{@code >} */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java index 0b98e78e39..3de5de0052 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java @@ -22,11 +22,9 @@ package org.jclouds.vcloud.director.v1_5.domain; import static com.google.common.base.Objects.equal; import static com.google.common.base.Preconditions.checkNotNull; -import java.util.ArrayList; import java.util.Collections; -import java.util.List; import java.util.Set; -import javax.xml.bind.JAXBElement; + import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlType; @@ -115,24 +113,24 @@ public class InstantiationParams { * Gets the value of the section property. *

* Objects of the following type(s) are allowed in the list - * {@link JAXBElement }{@code <}{@link SectionType }{@code >} - * {@link JAXBElement }{@code <}{@link VirtualHardwareSection }{@code >} - * {@link JAXBElement }{@code <}{@link LeaseSettingsSection }{@code >} - * {@link JAXBElement }{@code <}{@link EulaSection }{@code >} - * {@link JAXBElement }{@code <}{@link RuntimeInfoSection }{@code >} - * {@link JAXBElement }{@code <}{@link AnnotationSection }{@code >} - * {@link JAXBElement }{@code <}{@link DeploymentOptionSection }{@code >} - * {@link JAXBElement }{@code <}{@link StartupSection }{@code >} - * {@link JAXBElement }{@code <}{@link ResourceAllocationSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConnectionSection }{@code >} - * {@link JAXBElement }{@code <}{@link CustomizationSection }{@code >} - * {@link JAXBElement }{@code <}{@link ProductSection }{@code >} - * {@link JAXBElement }{@code <}{@link GuestCustomizationSection }{@code >} - * {@link JAXBElement }{@code <}{@link org.jclouds.ovf.OperatingSystemSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConfigSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkSection }{@code >} - * {@link JAXBElement }{@code <}{@link DiskSection }{@code >} - * {@link JAXBElement }{@code <}{@link InstallSection }{@code >} + * {@code <}{@link SectionType }{@code >} + * {@code <}{@link VirtualHardwareSection }{@code >} + * {@code <}{@link LeaseSettingsSection }{@code >} + * {@code <}{@link EulaSection }{@code >} + * {@code <}{@link RuntimeInfoSection }{@code >} + * {@code <}{@link AnnotationSection }{@code >} + * {@code <}{@link DeploymentOptionSection }{@code >} + * {@code <}{@link StartupSection }{@code >} + * {@code <}{@link ResourceAllocationSection }{@code >} + * {@code <}{@link NetworkConnectionSection }{@code >} + * {@code <}{@link CustomizationSection }{@code >} + * {@code <}{@link ProductSection }{@code >} + * {@code <}{@link GuestCustomizationSection }{@code >} + * {@code <}{@link org.jclouds.ovf.OperatingSystemSection }{@code >} + * {@code <}{@link NetworkConfigSection }{@code >} + * {@code <}{@link NetworkSection }{@code >} + * {@code <}{@link DiskSection }{@code >} + * {@code <}{@link InstallSection }{@code >} */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index 9c811c02ad..faa5ad8f8a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -308,24 +308,24 @@ public class VAppTemplate extends ResourceEntityType { * Gets the value of the section property. *

* Objects of the following type(s) are allowed in the list - * {@link JAXBElement }{@code <}{@link SectionType }{@code >} - * {@link JAXBElement }{@code <}{@link VirtualHardwareSection }{@code >} - * {@link JAXBElement }{@code <}{@link LeaseSettingsSection }{@code >} - * {@link JAXBElement }{@code <}{@link EulaSection }{@code >} - * {@link JAXBElement }{@code <}{@link RuntimeInfoSection }{@code >} - * {@link JAXBElement }{@code <}{@link AnnotationSection }{@code >} - * {@link JAXBElement }{@code <}{@link DeploymentOptionSection }{@code >} - * {@link JAXBElement }{@code <}{@link StartupSection }{@code >} - * {@link JAXBElement }{@code <}{@link ResourceAllocationSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConnectionSection }{@code >} - * {@link JAXBElement }{@code <}{@link CustomizationSection }{@code >} - * {@link JAXBElement }{@code <}{@link ProductSection }{@code >} - * {@link JAXBElement }{@code <}{@link GuestCustomizationSection }{@code >} - * {@link JAXBElement }{@code <}{@link OperatingSystemSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkConfigSection }{@code >} - * {@link JAXBElement }{@code <}{@link NetworkSection }{@code >} - * {@link JAXBElement }{@code <}{@link DiskSection }{@code >} - * {@link JAXBElement }{@code <}{@link InstallSection }{@code >} + * {@code <}{@link SectionType }{@code >} + * {@code <}{@link VirtualHardwareSection }{@code >} + * {@code <}{@link LeaseSettingsSection }{@code >} + * {@code <}{@link EulaSection }{@code >} + * {@code <}{@link RuntimeInfoSection }{@code >} + * {@code <}{@link AnnotationSection }{@code >} + * {@code <}{@link DeploymentOptionSection }{@code >} + * {@code <}{@link StartupSection }{@code >} + * {@code <}{@link ResourceAllocationSection }{@code >} + * {@code <}{@link NetworkConnectionSection }{@code >} + * {@code <}{@link CustomizationSection }{@code >} + * {@code <}{@link ProductSection }{@code >} + * {@code <}{@link GuestCustomizationSection }{@code >} + * {@code <}{@link OperatingSystemSection }{@code >} + * {@code <}{@link NetworkConfigSection }{@code >} + * {@code <}{@link NetworkSection }{@code >} + * {@code <}{@link DiskSection }{@code >} + * {@code <}{@link InstallSection }{@code >} */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); From 14ce89aab2b1e063558094fa090ac5d7d8926856 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 10:40:37 +0000 Subject: [PATCH 06/13] VCloud Director 1.5: Adding VAppTemplateClient error handling tests and fixing bug in NetworkService.isEnabled --- .../vcloud/director/v1_5/domain/Catalog.java | 9 - .../director/v1_5/domain/DhcpService.java | 1 - .../director/v1_5/domain/FirewallService.java | 6 + .../director/v1_5/domain/IpsecVpnService.java | 6 + .../vcloud/director/v1_5/domain/Owner.java | 6 +- .../v1_5/domain/StaticRoutingService.java | 6 + .../features/VAppTemplateAsyncClient.java | 27 ++ .../v1_5/features/VAppTemplateClient.java | 71 +++-- .../v1_5/functions/ThrowVCloudErrorOn4xx.java | 3 +- .../VAppTemplateClientExpectTest.java | 288 ++++++++++++++++-- .../test/resources/vapptemplate/error400.xml | 5 + .../test/resources/vapptemplate/error403.xml | 4 + 12 files changed, 366 insertions(+), 66 deletions(-) create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/error400.xml create mode 100644 labs/vcloud-director/src/test/resources/vapptemplate/error403.xml diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java index d6abd466da..7454d952d1 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Catalog.java @@ -174,18 +174,9 @@ public class Catalog extends CatalogType { } } -<<<<<<< HEAD public Catalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, String name, Owner owner, CatalogItems catalogItems, Boolean published) { super(href, type, links, description, tasksInProgress, id, name, owner, catalogItems, published); -======= - private Catalog(URI href, String type, Set links, String description, TasksInProgress tasksInProgress, String id, - String name, Entity owner, CatalogItems catalogItems, Boolean published) { - super(href, type, links, description, tasksInProgress, id, name); - this.owner = owner; - this.catalogItems = catalogItems; - this.isPublished = published; ->>>>>>> VCloud Director 1.5: Adjusting misleading comments and consistently using @XmlReference only for substitution groups } @SuppressWarnings("unused") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java index bbe8f04679..1d16051727 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/DhcpService.java @@ -106,7 +106,6 @@ public class DhcpService extends NetworkServiceType { this.isEnabled = enabled; return this; } - } @XmlElement(name = "DefaultLeaseTime") diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java index 6ed7c33c7b..ff31582edd 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/FirewallService.java @@ -118,6 +118,12 @@ public class FirewallService extends NetworkServiceType { .logDefaultAction(in.isLogDefaultAction()) .firewallRules(in.getFirewallRules()); } + + @Override + public Builder enabled(boolean isEnabled) { + this.isEnabled = isEnabled; + return this; + } } private FirewallService(boolean enabled, String defaultAction, Boolean logDefaultAction, Set firewallRules) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java index d9c5603722..198f43d958 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/IpsecVpnService.java @@ -118,6 +118,12 @@ public class IpsecVpnService extends NetworkServiceType { .publicIpAddress(in.getPublicIpAddress()) .ipsecVpnTunnels(in.getIpsecVpnTunnels()); } + + @Override + public Builder enabled(boolean isEnabled) { + this.isEnabled = isEnabled; + return this; + } } private IpsecVpnService(boolean enabled, String externalIpAddress, String publicIpAddress, List ipsecVpnTunnel) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java index 0fe6fc6662..6af3bb8e6c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java @@ -56,10 +56,12 @@ import com.google.common.collect.Sets; */ @XmlRootElement(name = "Owner") @XmlType(propOrder = {"user"}) -public class Owner - extends ResourceType +public class Owner extends ResourceType { +<<<<<<< HEAD { +======= +>>>>>>> VCloud Director 1.5: Adding VAppTemplateClient error handling tests and fixing bug in NetworkService.isEnabled public static Builder builder() { return new Builder(); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java index dbb6b3dee1..a0514d4009 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java @@ -96,6 +96,12 @@ public class StaticRoutingService extends NetworkServiceType staticRoutes) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java index 701d62af68..7f3db4edf8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncClient.java @@ -69,6 +69,7 @@ public interface VAppTemplateAsyncClient { @Produces(VAPP_TEMPLATE) @Consumes(TASK) @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) VAppTemplate template); @@ -78,6 +79,7 @@ public interface VAppTemplateAsyncClient { @DELETE @Consumes(TASK) @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture deleteVappTemplate(@EndpointParam URI templateUri); /** @@ -87,6 +89,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/action/consolidate") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture consolidateVappTemplate(@EndpointParam URI templateURI); /** @@ -96,6 +99,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/action/disableDownload") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture disableDownloadVappTemplate(@EndpointParam URI templateURI); /** @@ -105,6 +109,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/action/enableDownload") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture enableDownloadVappTemplate(@EndpointParam URI templateURI); /** @@ -115,6 +120,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/action/relocate") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture relocateVappTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) RelocateParams params); @@ -125,6 +131,7 @@ public interface VAppTemplateAsyncClient { @Consumes(CUSTOMIZATION_SECTION) @Path("/customizationSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateCustomizationSection(@EndpointParam URI templateURI); /** @@ -135,6 +142,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/customizationSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateCustomizationSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) CustomizationSection sectionType); @@ -145,6 +153,7 @@ public interface VAppTemplateAsyncClient { @Consumes(GUEST_CUSTOMIZATION_SECTION) @Path("/guestCustomizationSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI); /** @@ -155,6 +164,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/guestCustomizationSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) GuestCustomizationSection section); @@ -165,6 +175,7 @@ public interface VAppTemplateAsyncClient { @Consumes(LEASE_SETTINGS_SECTION) @Path("/leaseSettingsSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI); /** @@ -175,6 +186,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/leaseSettingsSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection); @@ -185,6 +197,7 @@ public interface VAppTemplateAsyncClient { @Consumes(METADATA) @Path("/metadata") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateMetadata(@EndpointParam URI templateURI); @PUT @@ -192,6 +205,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/metadata") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateMetadata(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) Metadata metadata); @@ -202,6 +216,7 @@ public interface VAppTemplateAsyncClient { @Consumes(METADATA_ENTRY) @Path("/metadata/{key}") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateMetadataValue(@EndpointParam URI templateURI, @PathParam("key") String key); @@ -213,6 +228,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/metadata/{key}") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateMetadataValue(@EndpointParam URI templateURI, @PathParam("key") String key, @BinderParam(BindToXMLPayload.class) MetadataValue value); @@ -224,6 +240,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/metadata/{key}") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture deleteVAppTemplateMetadataValue(@EndpointParam URI templateURI, @PathParam("key") String key); @@ -234,6 +251,7 @@ public interface VAppTemplateAsyncClient { @Consumes(NETWORK_CONFIG_SECTION) @Path("/networkConfigSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI); /** @@ -244,6 +262,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/networkConfigSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) NetworkConfigSection section); @@ -254,6 +273,7 @@ public interface VAppTemplateAsyncClient { @Consumes(NETWORK_CONNECTION_SECTION) @Path("/networkConnectionSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI); /** @@ -264,6 +284,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/networkConnectionSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section); @@ -274,6 +295,7 @@ public interface VAppTemplateAsyncClient { @Consumes(NETWORK_SECTION) @Path("/networkSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateNetworkSection(@EndpointParam URI templateURI); /** @@ -284,6 +306,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/networkSection") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editVAppTemplateNetworkSection(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) NetworkSection section); @@ -294,6 +317,7 @@ public interface VAppTemplateAsyncClient { @Consumes(ENVELOPE) @Path("/ovf") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getVAppTemplateOvf(@EndpointParam URI templateURI); /** @@ -303,6 +327,7 @@ public interface VAppTemplateAsyncClient { @Consumes(OWNER) @Path("/owner") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getOwnerOfVAppTemplate(@EndpointParam URI templateURI); /** @@ -312,6 +337,7 @@ public interface VAppTemplateAsyncClient { @Consumes(PRODUCT_SECTION_LIST) @Path("/productSections") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getProductSectionsForVAppTemplate(@EndpointParam URI templateURI); /** @@ -322,6 +348,7 @@ public interface VAppTemplateAsyncClient { @Consumes(TASK) @Path("/productSections") @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture editProductSectionsForVAppTemplate(@EndpointParam URI templateURI, @BinderParam(BindToXMLPayload.class) ProductSectionList sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java index 618647e8d6..1419dac4c4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClient.java @@ -38,7 +38,7 @@ public interface VAppTemplateClient { /** * Retrieves a vApp template (can be used also to retrieve a VM from a vApp Template). * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the requested template */ VAppTemplate getVAppTemplate(URI templateUri); @@ -46,8 +46,8 @@ public interface VAppTemplateClient { /** * Modifies only the name/description of a vApp template. * - * @@param templateUri the URI of the template - * @param template the template containing the new name and/or description + * @param templateUri the URI of the template + * @param template the template containing the new name and/or description * @return the task performing the action */ Task editVAppTemplate(URI templateUri, VAppTemplate template); @@ -55,7 +55,7 @@ public interface VAppTemplateClient { /** * Deletes a vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task deleteVappTemplate(URI templateUri); @@ -63,7 +63,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task consolidateVappTemplate(URI templateUri); @@ -71,7 +71,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task disableDownloadVappTemplate(URI templateUri); @@ -79,7 +79,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM, * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task enableDownloadVappTemplate(URI templateUri); @@ -87,7 +87,8 @@ public interface VAppTemplateClient { /** * Relocates a virtual machine in a vApp template to a different datastore. * * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param params contains the reference to the new datastore * @return the task performing the action */ Task relocateVappTemplate(URI templateUri, RelocateParams params); @@ -95,7 +96,7 @@ public interface VAppTemplateClient { /** * Retrieves the customization section of a vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ CustomizationSection getVAppTemplateCustomizationSection(URI templateUri); @@ -103,15 +104,16 @@ public interface VAppTemplateClient { /** * Modifies the vApp template customization information. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ - Task editVAppTemplateCustomizationSection(URI templateUri, CustomizationSection sectionType); + Task editVAppTemplateCustomizationSection(URI templateUri, CustomizationSection section); /** * Retrieves the Guest Customization Section of a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ GuestCustomizationSection getVAppTemplateGuestCustomizationSection(URI templateUri); @@ -119,15 +121,16 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ - Task editVAppTemplateGuestCustomizationSection(URI templateUri, GuestCustomizationSection sectionType); + Task editVAppTemplateGuestCustomizationSection(URI templateUri, GuestCustomizationSection section); /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ LeaseSettingsSection getVappTemplateLeaseSettingsSection(URI templateUri); @@ -135,15 +138,16 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ - Task editVappTemplateLeaseSettingsSection(URI templateUri, LeaseSettingsSection settingsSection); + Task editVappTemplateLeaseSettingsSection(URI templateUri, LeaseSettingsSection section); /** * Retrieves the metadata associated with a vApp Template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the requested metadata */ Metadata getVAppTemplateMetadata(URI templateUri); @@ -151,7 +155,7 @@ public interface VAppTemplateClient { /** * Merges the metadata for a vApp Template with the information provided. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task editVAppTemplateMetadata(URI templateUri, Metadata metadata); @@ -159,7 +163,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ MetadataValue getVAppTemplateMetadataValue(URI templateUri, String key); @@ -167,7 +171,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task editVAppTemplateMetadataValue(URI templateUri, String key, MetadataValue value); @@ -175,7 +179,7 @@ public interface VAppTemplateClient { /** * Consolidates a VM * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task deleteVAppTemplateMetadataValue(URI templateUri, String key); @@ -183,7 +187,7 @@ public interface VAppTemplateClient { /** * Retrieves the network config section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the network config section requested */ NetworkConfigSection getVAppTemplateNetworkConfigSection(URI templateUri); @@ -191,7 +195,8 @@ public interface VAppTemplateClient { /** * Modifies the network config section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ Task editVAppTemplateNetworkConfigSection(URI templateUri, NetworkConfigSection section); @@ -199,7 +204,7 @@ public interface VAppTemplateClient { /** * Retrieves the network connection section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the network connection section requested */ NetworkConnectionSection getVAppTemplateNetworkConnectionSection(URI templateUri); @@ -207,7 +212,8 @@ public interface VAppTemplateClient { /** * Modifies the network connection section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ Task editVAppTemplateNetworkConnectionSection(URI templateUri, NetworkConnectionSection section); @@ -215,7 +221,7 @@ public interface VAppTemplateClient { /** * Retrieves the network section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the network section requested */ NetworkSection getVAppTemplateNetworkSection(URI templateUri); @@ -223,7 +229,8 @@ public interface VAppTemplateClient { /** * Modifies the network section of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template + * @param section the new configuration to apply * @return the task performing the action */ Task editVAppTemplateNetworkSection(URI templateUri, NetworkSection section); @@ -231,7 +238,7 @@ public interface VAppTemplateClient { /** * Retrieves an OVF descriptor of a vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Envelope getVAppTemplateOvf(URI templateUri); @@ -239,7 +246,7 @@ public interface VAppTemplateClient { /** * Retrieves vApp template owner. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the owner of the vApp template */ Owner getOwnerOfVAppTemplate(URI templateUri); @@ -247,7 +254,7 @@ public interface VAppTemplateClient { /** * Retrieves VAppTemplate/VM product sections * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the product sections */ ProductSectionList getProductSectionsForVAppTemplate(URI templateUri); @@ -255,7 +262,7 @@ public interface VAppTemplateClient { /** * Modifies the product sections of a vApp or vApp template. * - * @@param templateUri the URI of the template + * @param templateUri the URI of the template * @return the task performing the action */ Task editProductSectionsForVAppTemplate(URI templateUri, ProductSectionList sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ThrowVCloudErrorOn4xx.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ThrowVCloudErrorOn4xx.java index 89d959711c..1507376f8d 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ThrowVCloudErrorOn4xx.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/functions/ThrowVCloudErrorOn4xx.java @@ -39,7 +39,8 @@ import com.google.common.collect.Iterables; @Singleton public class ThrowVCloudErrorOn4xx implements Function { @Inject - private ThrowVCloudErrorOn4xx() { } + private ThrowVCloudErrorOn4xx() { + } @Override public Object apply(Exception from) { diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java index 01e2eb1a18..406c3d142e 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateClientExpectTest.java @@ -27,6 +27,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Locale; +import org.jclouds.vcloud.director.v1_5.VCloudDirectorException; import org.jclouds.vcloud.director.v1_5.domain.*; import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest; import org.testng.annotations.Test; @@ -42,7 +43,7 @@ import com.google.common.collect.ImmutableSet; public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientExpectTest { public void testVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -59,15 +60,51 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(template, exampleTemplate()); - Task task = client.editVAppTemplate(uri, template); + Task task = client.editVAppTemplate(uri, exampleTemplate()); assertNotNull(task); task = client.deleteVappTemplate(uri); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId).acceptMedia(VAPP_TEMPLATE).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.getVAppTemplate(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId).xmlFilePayload("/vapptemplate/vAppTemplate.xml", VAPP_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.editVAppTemplate(uri, exampleTemplate()); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testDeleteMissingVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("DELETE", templateId).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.deleteVappTemplate(uri); + } + public void testConsolidateVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, @@ -80,8 +117,20 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testConsolidateMissingVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/consolidate").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.consolidateVappTemplate(uri); + } + public void testDisableDownloadVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, @@ -94,8 +143,20 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testDisableDownloadMissingVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/disableDownload").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.disableDownloadVappTemplate(uri); + } + public void testEnableDownloadVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, @@ -108,12 +169,24 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testEnableDownloadMissingVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.enableDownloadVappTemplate(uri); + } + public void testRelocateVAppTemplate() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = requestsSendResponses(loginRequest, sessionResponse, - new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").xmlFilePayload("/vappTemplate/relocateParams.xml", RELOCATE_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/relocate").xmlFilePayload("/vappTemplate/relocateParams.xml", RELOCATE_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), new VcloudHttpResponsePrimer().xmlFilePayload("/task/task.xml", TASK).httpResponseBuilder().build() ).getVAppTemplateClient(); @@ -126,8 +199,23 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testRelocateMissingVAppTemplate() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/relocate").xmlFilePayload("/vappTemplate/relocateParams.xml", RELOCATE_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + Reference datastore = Reference.builder().href(URI.create("https://vcloud.example.com/api/admin/extension/datastore/607")).build(); + RelocateParams params = RelocateParams.builder().datastore(datastore).build(); + + client.relocateVappTemplate(uri, params); + } + public void testCustomizationSection() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -142,12 +230,36 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(section, exampleCustomizationSection()); - Task task = client.editVAppTemplateCustomizationSection(uri, section); + Task task = client.editVAppTemplateCustomizationSection(uri, exampleCustomizationSection()); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetCustomizationSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/customizationSection").acceptMedia(CUSTOMIZATION_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.getVAppTemplateCustomizationSection(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditCustomizationSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/customizationSection").xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.editVAppTemplateCustomizationSection(uri, exampleCustomizationSection()); + } + public void testGuestCustomizationSection() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -162,12 +274,36 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(section, exampleGuestCustomizationSection()); - Task task = client.editVAppTemplateGuestCustomizationSection(uri, section); + Task task = client.editVAppTemplateGuestCustomizationSection(uri, exampleGuestCustomizationSection()); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetGuestCustomizationSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/guestCustomizationSection").acceptMedia(GUEST_CUSTOMIZATION_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.getVAppTemplateGuestCustomizationSection(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditGuestCustomizationSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/guestCustomizationSection").xmlFilePayload("/vapptemplate/guestCustomizationSection.xml", GUEST_CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.editVAppTemplateGuestCustomizationSection(uri, exampleGuestCustomizationSection()); + } + public void testLeaseSettingsSection() throws ParseException { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -182,12 +318,36 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(section, exampleLeaseSettingsSection()); - Task task = client.editVappTemplateLeaseSettingsSection(uri, section); + Task task = client.editVappTemplateLeaseSettingsSection(uri, exampleLeaseSettingsSection()); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetLeaseSettingsSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/leaseSettingsSection").acceptMedia(LEASE_SETTINGS_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.getVappTemplateLeaseSettingsSection(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditLeaseSettingsSection() throws ParseException { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/leaseSettingsSection").xmlFilePayload("/vapptemplate/leaseSettingsSection.xml", LEASE_SETTINGS_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.editVappTemplateLeaseSettingsSection(uri, exampleLeaseSettingsSection()); + } + public void testVappTemplateMetadata() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -202,12 +362,36 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(metadata, exampleMetadata()); - Task task = client.editVAppTemplateMetadata(uri, metadata); + Task task = client.editVAppTemplateMetadata(uri, exampleMetadata()); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetMetadata() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata").acceptMedia(METADATA).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.getVAppTemplateMetadata(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditMetadata() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/metadata").xmlFilePayload("/vapptemplate/metadata.xml", METADATA).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.editVAppTemplateMetadata(uri, exampleMetadata()); + } + public void testVappTemplateMetadataValue() { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -224,15 +408,51 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(metadata, exampleMetadataValue()); - Task task = client.editVAppTemplateMetadataValue(uri, "12345", metadata); + Task task = client.editVAppTemplateMetadataValue(uri, "12345", exampleMetadataValue()); assertNotNull(task); task = client.deleteVAppTemplateMetadataValue(uri, "12345"); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetMetadataValue() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/metadata/12345").acceptMedia(METADATA_ENTRY).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.getVAppTemplateMetadataValue(uri, "12345"); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditMetadataValue() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/metadata/12345").xmlFilePayload("/vapptemplate/metadataValue.xml", METADATA_ENTRY).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.editVAppTemplateMetadataValue(uri, "12345", exampleMetadataValue()); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testDeleteMissingMetadataValue() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("DELETE", templateId + "/metadata/12345").acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient(); + + client.deleteVAppTemplateMetadataValue(uri, "12345"); + } + public void testNetworkConfigSection() throws ParseException { - final String templateId = "/vAppTemplate/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; URI uri = URI.create(endpoint + templateId); VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, @@ -248,17 +468,41 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx assertEquals(section, exampleNetworkConfigSection()); - Task task = client.editVAppTemplateNetworkConfigSection(uri, section); + Task task = client.editVAppTemplateNetworkConfigSection(uri, exampleNetworkConfigSection()); assertNotNull(task); } + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorGetNetworkConfigSection() { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/networkConfigSection").acceptMedia(NETWORK_CONFIG_SECTION).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.getVAppTemplateNetworkConfigSection(uri); + } + + @Test(expectedExceptions = VCloudDirectorException.class) + public void testErrorEditNetworkConfigSection() throws ParseException { + final String templateId = "/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"; + URI uri = URI.create(endpoint + templateId); + + VAppTemplateClient client = orderedRequestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/networkConfigSection").xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).acceptMedia(TASK).httpRequestBuilder().build(), + new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient(); + + client.editVAppTemplateNetworkConfigSection(uri, exampleNetworkConfigSection()); + } + private VAppTemplate exampleTemplate() { Link aLink = Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vdc/d16d333b-e3c0-4176-845d-a5ee6392df07")) .type("application/vnd.vmware.vcloud.vdc+xml").rel("up").build(); Link bLink = Link.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9")) .rel("remove").build(); - Owner owner = Owner.builder().user(Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")).name("x@jclouds.org").type("application/vnd.vmware.admin.user+xml").build()).build(); + Owner owner = Owner.builder().type("application/vnd.vmware.vcloud.owner+xml").user(Reference.builder().href(URI.create("https://vcloudbeta.bluelock.com/api/admin/user/967d317c-4273-4a95-b8a4-bf63b78e9c69")).name("x@jclouds.org").type("application/vnd.vmware.admin.user+xml").build()).build(); LeaseSettingsSection leaseSettings = LeaseSettingsSection.builder().type("application/vnd.vmware.vcloud.leaseSettingsSection+xml") .href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9/leaseSettingsSection/")) @@ -359,7 +603,9 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx private NetworkConfigSection exampleNetworkConfigSection() throws ParseException { FirewallService firewallService = - FirewallService.builder().firewallRules( + FirewallService.builder() + .enabled(true) + .firewallRules( ImmutableSet.of( FirewallRule.builder() .isEnabled(true) diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/error400.xml b/labs/vcloud-director/src/test/resources/vapptemplate/error400.xml new file mode 100644 index 0000000000..79e7de7456 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/error400.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/labs/vcloud-director/src/test/resources/vapptemplate/error403.xml b/labs/vcloud-director/src/test/resources/vapptemplate/error403.xml new file mode 100644 index 0000000000..7b76031532 --- /dev/null +++ b/labs/vcloud-director/src/test/resources/vapptemplate/error403.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file From dff3b6af37023b54e6f5f5b6e0c52f53064713c4 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 11:53:11 +0000 Subject: [PATCH 07/13] Adjusting XMLUnit code to ignore whitespace between elements, making sure it still verifies that the amount of space in a leaf ( ) is still checked correctly --- .../jclouds/rest/BaseRestClientExpectTest.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java b/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java index 2a06138f36..803bdab2aa 100644 --- a/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java +++ b/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java @@ -378,12 +378,21 @@ public abstract class BaseRestClientExpectTest { Diff diff = XMLUnit.compareXML(Strings2.toStringAndClose(a.getPayload().getInput()), Strings2.toStringAndClose(b.getPayload().getInput())); - // Ignoring xsi:schemaLocation and differences in namespace prefixes + // Ignoring whitespace in elements that have other children, xsi:schemaLocation and differences in namespace prefixes diff.overrideDifferenceListener(new DifferenceListener() { @Override - public int differenceFound(Difference difference) { - if (difference.getId() == DifferenceConstants.SCHEMA_LOCATION_ID || - difference.getId() == DifferenceConstants.NAMESPACE_PREFIX_ID) { + public int differenceFound(Difference diff) { + if (diff.getId() == DifferenceConstants.SCHEMA_LOCATION_ID || + diff.getId() == DifferenceConstants.NAMESPACE_PREFIX_ID) { + return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL; + } + if (diff.getId() == DifferenceConstants.TEXT_VALUE_ID) { + for (NodeDetail detail : ImmutableSet.of(diff.getControlNodeDetail(), diff.getTestNodeDetail())) { + if (detail.getNode().getParentNode().getChildNodes().getLength() < 2 || + !detail.getValue().trim().isEmpty()) { + return RETURN_ACCEPT_DIFFERENCE; + } + } return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL; } return RETURN_ACCEPT_DIFFERENCE; From 15bcec01635f70fdc32e9471a4be3937c94b6c5d Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 12:57:52 +0000 Subject: [PATCH 08/13] Adjusting XMLUnit code to ignore whitespace between elements --- .../src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java b/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java index 803bdab2aa..9d8ced9f19 100644 --- a/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java +++ b/core/src/test/java/org/jclouds/rest/BaseRestClientExpectTest.java @@ -43,6 +43,7 @@ import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.Difference; import org.custommonkey.xmlunit.DifferenceConstants; import org.custommonkey.xmlunit.DifferenceListener; +import org.custommonkey.xmlunit.NodeDetail; import org.custommonkey.xmlunit.XMLUnit; import org.jclouds.Constants; import org.jclouds.concurrent.MoreExecutors; From af3560546c5beda1f35ea738500753fc3be071c2 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 16:33:16 +0000 Subject: [PATCH 09/13] Merging with upstream --- .../vcloud/director/v1_5/domain/Owner.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java index 6af3bb8e6c..2b8741af9c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Owner.java @@ -19,18 +19,17 @@ package org.jclouds.vcloud.director.v1_5.domain; -import static com.google.common.base.Objects.equal; -import static com.google.common.base.Preconditions.checkNotNull; - -import java.net.URI; -import java.util.Set; +import com.google.common.base.Objects; +import com.google.common.collect.Sets; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import java.net.URI; +import java.util.Set; -import com.google.common.base.Objects; -import com.google.common.collect.Sets; +import static com.google.common.base.Objects.equal; +import static com.google.common.base.Preconditions.checkNotNull; /** @@ -58,10 +57,6 @@ import com.google.common.collect.Sets; @XmlType(propOrder = {"user"}) public class Owner extends ResourceType { -<<<<<<< HEAD -{ -======= ->>>>>>> VCloud Director 1.5: Adding VAppTemplateClient error handling tests and fixing bug in NetworkService.isEnabled public static Builder builder() { return new Builder(); } From 8473f561fdeafdf4ac4761df5159d83f33d48aa6 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 16:43:52 +0000 Subject: [PATCH 10/13] vcloud-director 1.5: adjusting media types --- .../vcloud/director/v1_5/VCloudDirectorMediaType.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index 6d4c3a0f90..a9dd47fae4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -113,13 +113,13 @@ public class VCloudDirectorMediaType { public static final String GUEST_CUSTOMIZATION_SECTION = "application/vnd.vmware.vcloud.guestCustomizationSection+xml"; - public static final String NETWORK_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String NETWORK_SECTION = "application/vnd.vmware.vcloud.networkSection+xml"; - public static final String NETWORK_CONFIG_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String NETWORK_CONFIG_SECTION = "application/vnd.vmware.vcloud.networkConfigSection+xml"; - public static final String NETWORK_CONNECTION_SECTION = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String NETWORK_CONNECTION_SECTION = "application/vnd.vmware.vcloud.networkConnectionSection+xml"; - public static final String PRODUCT_SECTION_LIST = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + public static final String PRODUCT_SECTION_LIST = "application/vnd.vmware.vcloud.productSection+xml"; public static final String RELOCATE_TEMPLATE = "application/vnd.vmware.vcloud.relocateTemplate+xml"; From 335e14f505871e8266e6c4eac6c78ffe53e5575d Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 16:44:45 +0000 Subject: [PATCH 11/13] vcloud-director 1.5: fixing some javadoc problems --- .../v1_5/domain/CaptureVAppParams.java | 36 +++++++++---------- .../v1_5/domain/InstantiationParams.java | 36 +++++++++---------- .../director/v1_5/domain/VAppTemplate.java | 36 +++++++++---------- .../domain/ovf/internal/BaseEnvelope.java | 6 ---- 4 files changed, 54 insertions(+), 60 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java index 8398a6df89..038fbbcba8 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/CaptureVAppParams.java @@ -153,24 +153,24 @@ public class CaptureVAppParams * Gets the value of the section property. * * Objects of the following type(s) are allowed in the list - * {@code <}{@link Section> }{@code >} - * {@code <}{@link VirtualHardwareSection > }{@code >} - * {@code <}{@link LeaseSettingsSection> }{@code >} - * {@code <}{@link EulaSection> }{@code >} - * {@code <}{@link RuntimeInfoSection> }{@code >} - * {@code <}{@link AnnotationSection> }{@code >} - * {@code <}{@link DeploymentOptionSection > }{@code >} - * {@code <}{@link StartupSection> }{@code >} - * {@code <}{@link ResourceAllocationSection> }{@code >} - * {@code <}{@link NetworkConnectionSection> }{@code >} - * {@code <}{@link CustomizationSection> }{@code >} - * {@code <}{@link ProductSection > }{@code >} - * {@code <}{@link GuestCustomizationSection> }{@code >} - * {@code <}{@link OperatingSystemSection > }{@code >} - * {@code <}{@link NetworkConfigSection> }{@code >} - * {@code <}{@link NetworkSection > }{@code >} - * {@code <}{@link DiskSection > }{@code >} - * {@code <}{@link InstallSection> }{@code >} + * {@link Section } + * {@link VirtualHardwareSection } + * {@link LeaseSettingsSection } + * {@link EulaSection } + * {@link RuntimeInfoSection } + * {@link AnnotationSection } + * {@link DeploymentOptionSection } + * {@link StartupSection } + * {@link ResourceAllocationSection } + * {@link NetworkConnectionSection } + * {@link CustomizationSection } + * {@link ProductSection } + * {@link GuestCustomizationSection } + * {@link OperatingSystemSection } + * {@link NetworkConfigSection } + * {@link NetworkSection } + * {@link DiskSection } + * {@link InstallSection } */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java index 3de5de0052..4df90cd487 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/InstantiationParams.java @@ -113,24 +113,24 @@ public class InstantiationParams { * Gets the value of the section property. *

* Objects of the following type(s) are allowed in the list - * {@code <}{@link SectionType }{@code >} - * {@code <}{@link VirtualHardwareSection }{@code >} - * {@code <}{@link LeaseSettingsSection }{@code >} - * {@code <}{@link EulaSection }{@code >} - * {@code <}{@link RuntimeInfoSection }{@code >} - * {@code <}{@link AnnotationSection }{@code >} - * {@code <}{@link DeploymentOptionSection }{@code >} - * {@code <}{@link StartupSection }{@code >} - * {@code <}{@link ResourceAllocationSection }{@code >} - * {@code <}{@link NetworkConnectionSection }{@code >} - * {@code <}{@link CustomizationSection }{@code >} - * {@code <}{@link ProductSection }{@code >} - * {@code <}{@link GuestCustomizationSection }{@code >} - * {@code <}{@link org.jclouds.ovf.OperatingSystemSection }{@code >} - * {@code <}{@link NetworkConfigSection }{@code >} - * {@code <}{@link NetworkSection }{@code >} - * {@code <}{@link DiskSection }{@code >} - * {@code <}{@link InstallSection }{@code >} + * {@link SectionType } + * {@link VirtualHardwareSection } + * {@link LeaseSettingsSection } + * {@link EulaSection } + * {@link RuntimeInfoSection } + * {@link AnnotationSection } + * {@link DeploymentOptionSection } + * {@link StartupSection } + * {@link ResourceAllocationSection } + * {@link NetworkConnectionSection } + * {@link CustomizationSection } + * {@link ProductSection } + * {@link GuestCustomizationSection } + * {@link org.jclouds.ovf.OperatingSystemSection } + * {@link NetworkConfigSection } + * {@link NetworkSection } + * {@link DiskSection } + * {@link InstallSection } */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java index faa5ad8f8a..bb7c60e489 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/VAppTemplate.java @@ -308,24 +308,24 @@ public class VAppTemplate extends ResourceEntityType { * Gets the value of the section property. *

* Objects of the following type(s) are allowed in the list - * {@code <}{@link SectionType }{@code >} - * {@code <}{@link VirtualHardwareSection }{@code >} - * {@code <}{@link LeaseSettingsSection }{@code >} - * {@code <}{@link EulaSection }{@code >} - * {@code <}{@link RuntimeInfoSection }{@code >} - * {@code <}{@link AnnotationSection }{@code >} - * {@code <}{@link DeploymentOptionSection }{@code >} - * {@code <}{@link StartupSection }{@code >} - * {@code <}{@link ResourceAllocationSection }{@code >} - * {@code <}{@link NetworkConnectionSection }{@code >} - * {@code <}{@link CustomizationSection }{@code >} - * {@code <}{@link ProductSection }{@code >} - * {@code <}{@link GuestCustomizationSection }{@code >} - * {@code <}{@link OperatingSystemSection }{@code >} - * {@code <}{@link NetworkConfigSection }{@code >} - * {@code <}{@link NetworkSection }{@code >} - * {@code <}{@link DiskSection }{@code >} - * {@code <}{@link InstallSection }{@code >} + * {@link SectionType } + * {@link VirtualHardwareSection } + * {@link LeaseSettingsSection } + * {@link EulaSection } + * {@link RuntimeInfoSection } + * {@link AnnotationSection } + * {@link DeploymentOptionSection } + * {@link StartupSection } + * {@link ResourceAllocationSection } + * {@link NetworkConnectionSection } + * {@link CustomizationSection } + * {@link ProductSection } + * {@link GuestCustomizationSection } + * {@link OperatingSystemSection } + * {@link NetworkConfigSection } + * {@link NetworkSection } + * {@link DiskSection } + * {@link InstallSection } */ public Set> getSections() { return Collections.unmodifiableSet(this.sections); diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/BaseEnvelope.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/BaseEnvelope.java index b76ec28dbc..6a4a0394e5 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/BaseEnvelope.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ovf/internal/BaseEnvelope.java @@ -38,9 +38,6 @@ import com.google.common.collect.Sets; */ public abstract class BaseEnvelope, E extends BaseEnvelope> { - /** - * {@inheritDoc} - */ public abstract Builder toBuilder(); public static abstract class Builder, E extends BaseEnvelope> { @@ -109,9 +106,6 @@ public abstract class BaseEnvelope, E extends Bas return this; } - /** - * {@inheritDoc} - */ @SuppressWarnings("unchecked") public abstract E build() ; From 03e622ba2a8dbdf2a62c350860708a4bb273785a Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 18:05:48 +0000 Subject: [PATCH 12/13] vcloud-director 1.5: addressing review comments/nits --- .../vcloud/director/v1_5/domain/ResourceEntities.java | 2 +- .../v1_5/domain/SourcedCompositionItemParam.java | 2 +- .../vcloud/director/v1_5/domain/StaticRoute.java | 10 +++++----- .../director/v1_5/domain/StaticRoutingService.java | 4 ++-- .../vcloud/director/v1_5/domain/TasksInProgress.java | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java index d4fc25c893..1ad03ccf2a 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/ResourceEntities.java @@ -73,7 +73,7 @@ public class ResourceEntities { * @see ResourceEntities#getResourceEntities() */ public Builder resourceEntities(Set resourceEntities) { - this.resourceEntities = Sets.newLinkedHashSet(checkNotNull(resourceEntities, "resourceEntities")); + this.resourceEntities = ImmutableSet.copyOf(checkNotNull(resourceEntities, "resourceEntities")); return this; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java index b92176f2f7..c8755a4668 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/SourcedCompositionItemParam.java @@ -109,7 +109,7 @@ public class SourcedCompositionItemParam { * @see SourcedCompositionItemParam#getNetworkAssignments() */ public Builder networkAssignments(Set networkAssignments) { - this.networkAssignments = checkNotNull(networkAssignments, "networkAssignments"); + this.networkAssignments = ImmutableSet.copyOf(checkNotNull(networkAssignments, "networkAssignments")); return this; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java index 0908cd99e9..f3e8ce4318 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java @@ -72,7 +72,7 @@ public class StaticRoute { private String name; private String network; private String nextHopIp; - private String _interface; + private String theInterface; /** * @see StaticRoute#getName() @@ -101,20 +101,20 @@ public class StaticRoute { /** * @see StaticRoute#getInterface() */ - public Builder _interface(String _interface) { - this._interface = _interface; + public Builder setInterface(String theInterface) { + this.theInterface = theInterface; return this; } public StaticRoute build() { - return new StaticRoute(name, network, nextHopIp, _interface); + return new StaticRoute(name, network, nextHopIp, theInterface); } public Builder fromStaticRoute(StaticRoute in) { return name(in.getName()) .network(in.getNetwork()) .nextHopIp(in.getNextHopIp()) - ._interface(in.getInterface()); + .setInterface(in.getInterface()); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java index a0514d4009..995b65a3d2 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoutingService.java @@ -71,13 +71,13 @@ public class StaticRoutingService extends NetworkServiceType { - private List staticRoutes; + private List staticRoutes = ImmutableList.of(); /** * @see StaticRoutingService#getStaticRoutes() */ public Builder staticRoutes(List staticRoutes) { - this.staticRoutes = checkNotNull(staticRoutes, "staticRoutes"); + this.staticRoutes = ImmutableList.copyOf(checkNotNull(staticRoutes, "staticRoutes")); return this; } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java index b0a002f81f..cefefc0ec9 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/TasksInProgress.java @@ -53,7 +53,7 @@ public class TasksInProgress { * @see TasksInProgress#getTasks() */ public Builder tasks(Set tasks) { - this.tasks = checkNotNull(tasks, "tasks"); + this.tasks = ImmutableSet.copyOf(checkNotNull(tasks, "tasks")); return this; } From da1f23e3fbca3a4687cb102da96f77290ce23c46 Mon Sep 17 00:00:00 2001 From: Adam Lowe Date: Tue, 6 Mar 2012 18:09:54 +0000 Subject: [PATCH 13/13] vcloud-director 1.5: addressing '_interface' nonsense --- .../director/v1_5/domain/StaticRoute.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java index f3e8ce4318..e898b9017c 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/StaticRoute.java @@ -56,7 +56,7 @@ import com.google.common.base.Objects; "name", "network", "nextHopIp", - "_interface" + "theInterface" }) public class StaticRoute { @@ -118,20 +118,17 @@ public class StaticRoute { } } - private StaticRoute(String name, String network, String nextHopIp, String _interface) { + private StaticRoute(String name, String network, String nextHopIp, String theInterface) { this.name = checkNotNull(name, "name"); this.network = checkNotNull(network, "network"); this.nextHopIp = checkNotNull(nextHopIp, "nextHopIp"); - this._interface = checkNotNull(_interface, "interface"); + this.theInterface = checkNotNull(theInterface, "interface"); } private StaticRoute() { // for JAXB } - private StaticRoute(String _interface) { - this._interface = _interface; - } @XmlElement(name = "Name", required = true) protected String name; @@ -140,7 +137,7 @@ public class StaticRoute { @XmlElement(name = "NextHopIp", required = true) protected String nextHopIp; @XmlElement(name = "Interface", required = true) - protected String _interface; + protected String theInterface; /** * Gets the value of the name property. @@ -179,7 +176,7 @@ public class StaticRoute { * {@link String } */ public String getInterface() { - return _interface; + return theInterface; } @Override @@ -192,7 +189,7 @@ public class StaticRoute { return equal(name, that.name) && equal(network, that.network) && equal(nextHopIp, that.nextHopIp) && - equal(_interface, that._interface); + equal(theInterface, that.theInterface); } @Override @@ -200,7 +197,7 @@ public class StaticRoute { return Objects.hashCode(name, network, nextHopIp, - _interface); + theInterface); } @Override @@ -209,6 +206,6 @@ public class StaticRoute { .add("name", name) .add("network", network) .add("nextHopIp", nextHopIp) - .add("_interface", _interface).toString(); + .add("interface", theInterface).toString(); } }