From ca5409866100c568734e6ef23e436676f7b0591b Mon Sep 17 00:00:00 2001 From: Andrew Donald Kennedy Date: Fri, 10 Feb 2012 13:35:48 +0000 Subject: [PATCH] Updates to CatalogClient --- .../v1_5/VCloudDirectorAsyncClient.java | 6 +++++ .../VCloudDirectorRestClientModule.java | 5 +++- .../v1_5/features/CatalogAsyncClient.java | 24 +++++++------------ .../director/v1_5/features/CatalogClient.java | 3 ++- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java index afac3ebc0a..9eb3e15dc4 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorAsyncClient.java @@ -59,4 +59,10 @@ public interface VCloudDirectorAsyncClient { */ @Delegate NetworkAsyncClient getNetworkClient(); + + /** + * @return asynchronous access to Catalog features + */ + @Delegate + CatalogAsyncClient getCatalogClient(); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java index 9c868d7f6e..522137d648 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/config/VCloudDirectorRestClientModule.java @@ -42,6 +42,8 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient; import org.jclouds.vcloud.director.v1_5.annotations.Login; import org.jclouds.vcloud.director.v1_5.domain.Session; import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken; +import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient; +import org.jclouds.vcloud.director.v1_5.features.CatalogClient; import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient; import org.jclouds.vcloud.director.v1_5.features.NetworkClient; import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient; @@ -75,8 +77,9 @@ import com.google.inject.name.Named; public class VCloudDirectorRestClientModule extends RestClientModule { public static final Map, Class> DELEGATE_MAP = ImmutableMap., Class> builder()// - .put(OrgClient.class, OrgAsyncClient.class) + .put(CatalogClient.class, CatalogAsyncClient.class) .put(NetworkClient.class, NetworkAsyncClient.class) + .put(OrgClient.class, OrgAsyncClient.class) .put(TaskClient.class, TaskAsyncClient.class) .build(); 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 d9837471ba..e3b8815d23 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 @@ -27,17 +27,18 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +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.Payload; -import org.jclouds.rest.annotations.PayloadParam; 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.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.MetadataEntry; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.domain.Task; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; @@ -58,7 +59,6 @@ public interface CatalogAsyncClient { */ @GET @Consumes - @Produces(VCloudDirectorMediaType.CATALOG) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalog(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogRef); @@ -73,15 +73,14 @@ public interface CatalogAsyncClient { @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture addCatalogItem(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogRef, - @PayloadParam("catalogItem") CatalogItem catalogItem); - + @BinderParam(BindToXMLPayload.class) CatalogItem catalogItem); + /** * Returns the metadata associated with the catalog. */ @GET @Path("/metadata") @Consumes - @Produces(VCloudDirectorMediaType.METADATA) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalogMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogRef); @@ -92,7 +91,6 @@ public interface CatalogAsyncClient { @GET @Path("/metadata/{key}") @Consumes - @Produces(VCloudDirectorMediaType.METADATA_ENTRY) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalogMetadataEntry(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogRef, @@ -103,7 +101,6 @@ public interface CatalogAsyncClient { */ @GET @Consumes - @Produces(VCloudDirectorMediaType.CATALOG_ITEM) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalogItem(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef); @@ -117,7 +114,7 @@ public interface CatalogAsyncClient { @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture updateCatalogItem(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef, - @PayloadParam("catalogItem") CatalogItem catalogItem); + @BinderParam(BindToXMLPayload.class) CatalogItem catalogItem); /** * Deletes a catalog item. @@ -134,7 +131,6 @@ public interface CatalogAsyncClient { @GET @Path("/metadata") @Consumes - @Produces(VCloudDirectorMediaType.METADATA) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalogItemMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef); @@ -149,7 +145,7 @@ public interface CatalogAsyncClient { @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture mergeCatalogItemMetadata(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef, - @PayloadParam("catalogItemMetadata") Metadata catalogItemMetadata); + @BinderParam(BindToXMLPayload.class) Metadata catalogItemMetadata); /** * Returns the metadata associated with the catalog item for the specified key. @@ -157,7 +153,6 @@ public interface CatalogAsyncClient { @GET @Path("/metadata/{key}") @Consumes - @Produces(VCloudDirectorMediaType.METADATA_ENTRY) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture getCatalogItemMetadataEntry(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef, @@ -168,12 +163,12 @@ public interface CatalogAsyncClient { */ @PUT @Path("/metadata/{key}") - @Consumes /* (VCloudDirectorMediaType.METADATA_VALUE) */ + @Consumes(VCloudDirectorMediaType.METADATA_VALUE) @Produces(VCloudDirectorMediaType.TASK) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture setCatalogItemMetadataEntry(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef, - @PathParam("key") String key, @PayloadParam("metadataValue") /* MetadataValue */ Object metadataValue); + @PathParam("key") String key, @BinderParam(BindToXMLPayload.class) MetadataValue metadataValue); /** * Deletes the metadata for the particular key for the catalog item. @@ -181,7 +176,6 @@ public interface CatalogAsyncClient { @DELETE @Path("/metadata/{key}") @Consumes - @Produces(VCloudDirectorMediaType.TASK) @JAXBResponseParser @ExceptionParser(ThrowVCloudErrorOn4xx.class) ListenableFuture deleteCatalogItemMetadataEntry(@EndpointParam(parser = ReferenceToEndpoint.class) ReferenceType catalogItemRef, 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 41f77828cf..981286730f 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 @@ -25,6 +25,7 @@ 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.MetadataEntry; +import org.jclouds.vcloud.director.v1_5.domain.MetadataValue; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.domain.Task; @@ -173,7 +174,7 @@ public interface CatalogClient { * @param value the metadata value * @return a task for the set operation */ - Task setCatalogItemMetadataEntry(ReferenceType catalogItemRef, String key, /* MetadataValue */ Object value); + Task setCatalogItemMetadataEntry(ReferenceType catalogItemRef, String key, MetadataValue value); /** * Deletes the metadata for the particular key for the catalog item.