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 8a24111ebc..4e8fb0cf83 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 @@ -18,6 +18,9 @@ */ package org.jclouds.vcloud.director.v1_5; +import java.util.Arrays; +import java.util.List; + /** * Resource Types used in VCloud. * @@ -60,4 +63,9 @@ public class VCloudDirectorMediaType { public static final String PROPERTY = "application/vnd.vmware.vcloud.property+xml"; + public static final List ALL = Arrays.asList( + SESSION, ERROR, ORG_LIST, METADATA, METADATA_ENTRY, + METADATA_VALUE, ORG, TASKS_LIST, TASK, ORG_NETWORK, + CATALOG, CATALOG_ITEM, CATALOG_ITEMS, CATALOGS_LIST, PROPERTY + ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java index 6a9c68def2..ced3b93561 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/EntityType.java @@ -161,7 +161,7 @@ public class EntityType> extends ResourceType { private TasksInProgress tasksInProgress; @XmlAttribute private String id; - @XmlAttribute + @XmlAttribute(required = true) private String name; protected EntityType(URI href, String name) { diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java index ed4d5de848..2fe4c3fe63 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/Link.java @@ -22,6 +22,8 @@ import static com.google.common.base.Objects.*; import static com.google.common.base.Preconditions.*; import java.net.URI; +import java.util.Arrays; +import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlAttribute; @@ -40,6 +42,17 @@ import com.google.common.base.Objects.ToStringHelper; */ public class Link extends ReferenceType { + public static final class Rel { + public static final String UP = "up"; + public static final String DOWN = "down"; + public static final String EDIT = "edit"; + public static final String DELETE = "delete"; + + public static final List ALL = Arrays.asList( + UP, DOWN, EDIT, DELETE + ); + } + @SuppressWarnings("unchecked") public static Builder builder() { return new Builder(); @@ -133,7 +146,7 @@ public class Link extends ReferenceType { } } - @XmlAttribute + @XmlAttribute(required = true) private String rel; private Link(URI href, String rel) { 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 e9444d8ef7..4992ba8e54 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 @@ -108,7 +108,7 @@ public class ReferenceType> implements URISupplier { } } - @XmlAttribute + @XmlAttribute(required = true) private URI href; @XmlAttribute private String id; 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 11d79f6143..dfe569d62a 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 @@ -23,7 +23,9 @@ import static com.google.common.base.Preconditions.*; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.*; import java.net.URI; +import java.util.Arrays; import java.util.Date; +import java.util.List; import java.util.Set; import javax.xml.bind.annotation.XmlAttribute; @@ -49,6 +51,21 @@ import com.google.common.collect.Sets; public class Task extends EntityType { public static final String MEDIA_TYPE = VCloudDirectorMediaType.TASK; + + public static class Status { + public static final String QUEUED = "queued"; + public static final String PRE_RUNNING = "preRunning"; + public static final String RUNNING = "running"; + public static final String SUCCESS = "success"; + public static final String ERROR = "error"; + public static final String CANCELED = "canceled"; + public static final String ABORTED = "aborted"; + + public static final List ALL = Arrays.asList( + QUEUED, PRE_RUNNING, RUNNING, SUCCESS, + ERROR, CANCELED, ABORTED + ); + } @SuppressWarnings("unchecked") public static Builder builder() { 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 new file mode 100644 index 0000000000..1b4265efa7 --- /dev/null +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -0,0 +1,148 @@ +/** + * 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 org.testng.Assert.*; + +import java.net.URI; +import java.util.Set; +import java.util.UUID; + +import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType; + +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; + +/** + * @author grkvlt@apache.org + */ +public class Checks { + + protected void checkEntityType(EntityType entity) { + // Check required fields + assertNotNull(entity.getName(), "The Name attribute of an EntityType must be set"); + + // Check optional fields +// String description = entity.getDescription(); // ??? + TasksInProgress tasksInProgress = entity.getTasksInProgress(); + if (tasksInProgress != null && tasksInProgress.getTasks() != null && !tasksInProgress.getTasks().isEmpty()) { + for (Task task : tasksInProgress.getTasks()) checkTask(task); + } + + // Check parent type + checkResourceType(entity); + } + + protected void checkReferenceType(ReferenceType reference) { + // Check required fields + assertNotNull(reference.getHref(), "The Href attribute of a ReferenceType must be set"); + + // Check optional fields + String id = reference.getId(); + if (id != null) checkId(id); + String type = reference.getType(); + if (type != null) checkType(type); +// String name = reference.getName(); // ??? + } + + protected void checkResourceType(ResourceType resource) { + // Check optional fields + URI href = resource.getHref(); + if (href != null) checkHref(href); + String type = resource.getType(); + if (type != null) checkType(type); + Set links = resource.getLinks(); + if (links != null && !links.isEmpty()) { + for (Link link : links) checkLink(link); + } + } + + protected void checkId(String id) { + Iterable parts = Splitter.on(':').split(id); + assertEquals(Iterables.size(parts), 4, "The Id must be well formed"); + assertEquals(Iterables.get(parts, 0), "urn", "The Id must start with 'urn'"); + assertEquals(Iterables.get(parts, 1), "vcloud", "The Id must include 'vcloud'"); + try { + UUID uuid = UUID.fromString(Iterables.get(parts, 3)); + assertNotNull(uuid, "The UUID part of an Id must be well formed"); + } catch (IllegalArgumentException iae) { + fail("The UUID part of an Id must be well formed"); + } + } + + protected void checkType(String type) { + assertTrue(VCloudDirectorMediaType.ALL.contains(type), "The Type must be a valid media type"); + } + + protected void checkHref(URI href) { + String uri = href.toASCIIString(); + String auth = href.getAuthority(); + String host = href.getHost(); + String path = href.getPath(); +// assertEquals(auth + "://" + host + path, endpoint, "The Href must contain the provider endpoint"); +// assertTrue(uri.startsWith(endpoint), "The Href must contain the provider endpoint"); + } + + protected void checkLink(Link link) { + // Check required fields + assertNotNull(link.getRel(), "The Rel attribute of a Link must be set"); + assertTrue(Link.Rel.ALL.contains(link.getRel()), "The Rel attribute of a Link must be one of the allowed list"); + + // Check parent type + checkReferenceType(link); + } + + protected void checkTask(Task task) { + // Check required fields + assertNotNull(task.getStatus(), "The Status attribute of a Task must be set"); + assertTrue(Task.Status.ALL.contains(task.getStatus()), "The Status of a Task must be one of the allowed list"); + + // Check optional fields +// String operation = task.getOperation(); // ??? +// String operationName = task.getOperationName(); // ???; +// Date startTime = task.getStartTime(); // ??? +// Date endTime = task.getEndTime(); // ??? +// Date expiryTime = task.getExpiryTime(); // ??? +// ReferenceType owner = task.getOwner(); // ??? + Error error = task.getError(); + if (error != null) checkError(error); +// ReferenceType user = task.getUser(); // ??? +// ReferenceType organization = task.getOrg(); // ??? + Integer progress = task.getProgress(); + if (progress != null) checkProgress(progress); +// Object params = task.getParams(); // ??? + + // Check parent type + checkEntityType(task); + } + + protected void checkProgress(Integer progress) { + assertTrue(progress >= 0 && progress <= 100, "The Progress attribute must be between 0 and 100"); + } + + protected void checkError(Error error) { + // Check required fields + assertNotNull(error.getMessage(), "The Message attribute of an Error must be set"); + assertNotNull(error.getMajorErrorCode(), "The MajorErrorCode attribute of an Error must be set"); + assertNotNull(error.getMinorErrorCode(), "The MinorErrorCode attribute of an Error must be set"); + +// String vendorSpecificErrorCode = error.getVendorSpecificErrorCode(); // ??? +// String stackTrace = error.getStackTrace(); // ??? + } +} 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 b7c3dc7f6d..735191b21c 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 @@ -38,7 +38,7 @@ import org.testng.annotations.Test; import com.google.common.collect.Iterables; /** - * Allows us to test a client via its side effects. + * Allows us to test the {@link OrgClient} via its side effects. * * @author Adrian Cole */ @@ -234,7 +234,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest .rel("down") .type("application/vnd.vmware.vcloud.catalog+xml") .name("Public") - .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/9e08c2f6-077a-42ce-bece-d5332e2ebb5c")) + .href(URI.create("https://vcloudbeta.bluelock.com/api/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")) .build()) .link(Link.builder() .rel("down") 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 new file mode 100644 index 0000000000..fb8f1f324f --- /dev/null +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/OrgClientLiveTest.java @@ -0,0 +1,226 @@ +/** + * Licensed to jclouds, Inc. (jclouds) under one or more + * contributor license agreements. See the NOTICE file + * distributed with this work for additional information + *(Link.builder().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(Link.builder().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.features; + +import static org.testng.Assert.*; + +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.Reference; +import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest; +import org.testng.annotations.Test; + +import com.google.common.collect.Iterables; + +/** +* Tests live behavior of {@link OrgClient}. +* +* @author grkvlt@apache.org +*/ +@Test(groups = { "live", "apitests" }, testName = "OrgClientLiveTest") +public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { + @Test(testName = "GET /org/{id}") + public void testGetOrg() { + OrgList orgList = context.getApi().getOrgClient().getOrgList(); + assertFalse(Iterables.isEmpty(orgList.getOrgs()), "There must always be Org elements in the OrgList"); + Reference orgRef = Iterables.getFirst(orgList.getOrgs(), null); + + // Call the method being tested + Org org = context.getApi().getOrgClient().getOrg(orgRef); + + // Check required elements and attributes of the Org + assertNotNull(org.getFullName(), "The FullName field of the Org must not be null"); + + // Check required elements and attributes of EntityType + checkEntityType(org); + + assertNotNull(org.getName(), "The Name field of the Org must not be null"); + + // Check optional elements and attributes of the Org + org.getDescription(); + org.g + + } + +// @Test +// public void testWhenResponseIs2xxLoginReturnsValidOrgList() { +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org"), +// getStandardPayloadResponse("/org/orglist.xml", VCloudDirectorMediaType.ORG_LIST)); +// +// OrgList expected = OrgList.builder() +// .org(Reference.builder() +// .type("application/vnd.vmware.vcloud.org+xml") +// .name("JClouds") +// .href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) +// .build()) +// .build(); +// +// assertEquals(client.getOrgClient().getOrgList(), expected); +// } +// +// @Test +// public void testWhenResponseIs2xxLoginReturnsValidOrgFromListByReference() { +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org"), +// getStandardPayloadResponse("/org/orglist.xml", VCloudDirectorMediaType.ORG_LIST)); +// +// Reference org = Iterables.getOnlyElement(client.getOrgClient().getOrgList().getOrgs()); +// +// client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", org.getHref()), +// getStandardPayloadResponse("/org/org.xml", VCloudDirectorMediaType.ORG)); +// +// Org expected = org(); +// +// assertEquals(client.getOrgClient().getOrg(org), expected); +// } +// +// @Test +// public void testWhenResponseIs2xxLoginReturnsValidOrg() { +// URI orgUri = URI.create(endpoint + "/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"), +// getStandardPayloadResponse("/org/org.xml", VCloudDirectorMediaType.ORG)); +// +// Org expected = org(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// +// assertEquals(client.getOrgClient().getOrg(orgRef), expected); +// } +// +// @Test +// public void testWhenResponseIs400ForInvalidOrgId() { +// URI orgUri = URI.create(endpoint + "/org/NOTAUUID"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/NOTAUUID"), +// getStandardPayloadResponse(400, "/org/error400.xml", VCloudDirectorMediaType.ERROR)); +// +// Error expected = Error.builder() +// .message("validation error on field 'id': String value has invalid format or length") +// .majorErrorCode(400) +// .minorErrorCode("BAD_REQUEST") +// .build(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// try { +// client.getOrgClient().getOrg(orgRef); +// 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 testWhenResponseIs403ForCatalogIdUsedAsOrgId() { +// URI orgUri = URI.create(endpoint + "/org/9e08c2f6-077a-42ce-bece-d5332e2ebb5c"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/9e08c2f6-077a-42ce-bece-d5332e2ebb5c"), +// getStandardPayloadResponse(403, "/org/error403-catalog.xml", VCloudDirectorMediaType.ERROR)); +// +// Error expected = Error.builder() +// .message("No access to entity \"com.vmware.vcloud.entity.org:9e08c2f6-077a-42ce-bece-d5332e2ebb5c\".") +// .majorErrorCode(403) +// .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") +// .build(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// +// try { +// client.getOrgClient().getOrg(orgRef); +// fail("Should give HTTP 403 error"); +// } catch (VCloudDirectorException vde) { +// assertEquals(vde.getError(), expected); +// } catch (Exception e) { +// fail("Should have thrown a VCloudDirectorException"); +// } +// } +// +// @Test +// public void testWhenResponseIs403ForFakeOrgId() { +// URI orgUri = URI.create(endpoint + "/org/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"), +// getStandardPayloadResponse(403, "/org/error403-fake.xml", VCloudDirectorMediaType.ERROR)); +// +// Error expected = Error.builder() +// .message("No access to entity \"com.vmware.vcloud.entity.org:aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\".") +// .majorErrorCode(403) +// .minorErrorCode("ACCESS_TO_RESOURCE_IS_FORBIDDEN") +// .build(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// +// try { +// client.getOrgClient().getOrg(orgRef); +// fail("Should give HTTP 403 error"); +// } catch (VCloudDirectorException vde) { +// assertEquals(vde.getError(), expected); +// } catch (Exception e) { +// fail("Should have thrown a VCloudDirectorException"); +// } +// } +// +// @Test +// public void testWhenResponseIs2xxLoginReturnsValidMetadataList() { +// URI orgUri = URI.create(endpoint + "/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/metadata"), +// getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATA)); +// +// Metadata expected = Metadata.builder() +// .type("application/vnd.vmware.vcloud.metadata+xml") +// .href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/metadata")) +// .link(Link.builder() +// .rel("up") +// .type("application/vnd.vmware.vcloud.org+xml") +// .href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")) +// .build()) +// .build(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// +// assertEquals(client.getOrgClient().getMetadata(orgRef), expected); +// } +// +// @Test(enabled=false) // No metadata in exemplar xml... +// public void testWhenResponseIs2xxLoginReturnsValidMetadata() { +// URI orgUri = URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"); +// +// VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, +// getStandardRequest("GET", "/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/metadata/KEY"), +// getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATA_ENTRY)); +// +// MetadataEntry expected = MetadataEntry.builder() +// .key("KEY") +// .build(); +// +// Reference orgRef = Reference.builder().href(orgUri).build(); +// +// assertEquals(client.getOrgClient().getMetadataEntry(orgRef, "KEY"), expected); +// } +} 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 74662b0bdd..4368edf6fb 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 @@ -22,11 +22,11 @@ import java.util.Properties; import org.jclouds.compute.BaseVersionedServiceLiveTest; import org.jclouds.logging.slf4j.config.SLF4JLoggingModule; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorAsyncClient; -import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.rest.RestContext; 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.testng.annotations.AfterGroups; import org.testng.annotations.BeforeGroups; import org.testng.annotations.Test; @@ -60,5 +60,4 @@ public class BaseVCloudDirectorClientLiveTest extends BaseVersionedServiceLiveTe if (context != null) context.close(); } - } diff --git a/labs/vcloud-director/src/test/resources/org/org.xml b/labs/vcloud-director/src/test/resources/org/org.xml index 941eb7dbd0..f87c5a9913 100644 --- a/labs/vcloud-director/src/test/resources/org/org.xml +++ b/labs/vcloud-director/src/test/resources/org/org.xml @@ -2,7 +2,7 @@ - +