http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
----------------------------------------------------------------------
diff --git 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
deleted file mode 100644
index 6915539..0000000
--- 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateAsyncApi.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF 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.features;
-
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CUSTOMIZATION_SECTION;
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.LEASE_SETTINGS_SECTION;
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_CONFIG_SECTION;
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_SECTION;
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OWNER;
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.PRODUCT_SECTION_LIST;
-import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.TASK;
-import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VAPP_TEMPLATE;
-
-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.Produces;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.dmtf.ovf.NetworkSection;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-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.Owner;
-import org.jclouds.vcloud.director.v1_5.domain.ProductSectionList;
-import org.jclouds.vcloud.director.v1_5.domain.References;
-import org.jclouds.vcloud.director.v1_5.domain.Task;
-import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
-import org.jclouds.vcloud.director.v1_5.domain.dmtf.Envelope;
-import org.jclouds.vcloud.director.v1_5.domain.section.CustomizationSection;
-import org.jclouds.vcloud.director.v1_5.domain.section.LeaseSettingsSection;
-import org.jclouds.vcloud.director.v1_5.domain.section.NetworkConfigSection;
-import 
org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToHref;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * @see VAppTemplateApi
- */
-@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
-public interface VAppTemplateAsyncApi {
-
-   /**
-    * @see VAppTemplateApi#get(String)
-    */
-   @GET
-   @Consumes(VAPP_TEMPLATE)
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<VAppTemplate> get(@EndpointParam(parser = URNToHref.class) 
String reference);
-
-   /**
-    * @see VAppTemplateApi#edit(String, VAppTemplate)
-    */
-   @PUT
-   @Produces(VAPP_TEMPLATE)
-   @Consumes(TASK)
-   @JAXBResponseParser
-   ListenableFuture<Task> edit(@EndpointParam(parser = URNToHref.class) String 
templateUrn,
-            @BinderParam(BindToXMLPayload.class) VAppTemplate template);
-
-   /**
-    * @see VAppTemplateApi#remove(String)
-    */
-   @DELETE
-   @Consumes(TASK)
-   @JAXBResponseParser
-   ListenableFuture<Task> remove(@EndpointParam String templateUri);
-
-   /**
-    * @see VAppTemplateApi#disableDownload(String)
-    */
-   @POST
-   @Path("/action/disableDownload")
-   @JAXBResponseParser
-   ListenableFuture<Void> disableDownload(@EndpointParam(parser = 
URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#enableDownload(String)
-    */
-   @POST
-   @Consumes(TASK)
-   @Path("/action/enableDownload")
-   @JAXBResponseParser
-   ListenableFuture<Task> enableDownload(@EndpointParam(parser = 
URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getCustomizationSection(String)
-    */
-   @GET
-   @Consumes(CUSTOMIZATION_SECTION)
-   @Path("/customizationSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<CustomizationSection> getCustomizationSection(
-            @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getLeaseSettingsSection(String)
-    */
-   @GET
-   @Consumes(LEASE_SETTINGS_SECTION)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<LeaseSettingsSection> getLeaseSettingsSection(
-            @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#editLeaseSettingsSection(String, 
LeaseSettingsSection)
-    */
-   @PUT
-   @Produces(LEASE_SETTINGS_SECTION)
-   @Consumes(TASK)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   ListenableFuture<Task> editLeaseSettingsSection(
-            @EndpointParam(parser = URNToHref.class) String templateUrn,
-            @BinderParam(BindToXMLPayload.class) LeaseSettingsSection 
settingsSection);
-
-   /**
-    * @see VAppTemplateApi#getNetworkConfigSection(String)
-    */
-   @GET
-   @Consumes(NETWORK_CONFIG_SECTION)
-   @Path("/networkConfigSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<NetworkConfigSection> getNetworkConfigSection(
-            @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getNetworkSection(String)
-    */
-   @GET
-   @Consumes(NETWORK_SECTION)
-   @Path("/networkSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<NetworkSection> getNetworkSection(
-            @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getOvf(String)
-    */
-   @GET
-   @Consumes
-   @Path("/ovf")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Envelope> getOvf(@EndpointParam(parser = URNToHref.class) 
String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getOwnerOfVAppTemplate(String)
-    */
-   @GET
-   @Consumes(OWNER)
-   @Path("/owner")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Owner> getOwner(@EndpointParam(parser = URNToHref.class) 
String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#getProductSectionsForVAppTemplate(String)
-    */
-   @GET
-   @Consumes(PRODUCT_SECTION_LIST)
-   @Path("/productSections")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<ProductSectionList> getProductSections(
-            @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#editProductSections(String, ProductSectionList)
-    */
-   @PUT
-   @Produces(PRODUCT_SECTION_LIST)
-   @Consumes(TASK)
-   @Path("/productSections")
-   @JAXBResponseParser
-   ListenableFuture<Task> editProductSections(@EndpointParam(parser = 
URNToHref.class) String templateUrn,
-            @BinderParam(BindToXMLPayload.class) ProductSectionList sections);
-
-   /**
-    * @see VAppTemplateApi#getShadowVms(String)
-    */
-   @GET
-   @Consumes
-   @Path("/shadowVms")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<References> getShadowVms(@EndpointParam(parser = 
URNToHref.class) String templateUrn);
-
-   /**
-    * @see VAppTemplateApi#get(URI)
-    */
-   @GET
-   @Consumes(VAPP_TEMPLATE)
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<VAppTemplate> get(@EndpointParam URI reference);
-
-   /**
-    * @see VAppTemplateApi#edit(URI, VAppTemplate)
-    */
-   @PUT
-   @Produces(VAPP_TEMPLATE)
-   @Consumes(TASK)
-   @JAXBResponseParser
-   ListenableFuture<Task> edit(@EndpointParam URI templateHref,
-            @BinderParam(BindToXMLPayload.class) VAppTemplate template);
-
-   /**
-    * @see VAppTemplateApi#remove(URI)
-    */
-   @DELETE
-   @Consumes(TASK)
-   @JAXBResponseParser
-   ListenableFuture<Task> remove(@EndpointParam URI templateUri);
-
-   /**
-    * @see VAppTemplateApi#disableDownload(URI)
-    */
-   @POST
-   @Path("/action/disableDownload")
-   @JAXBResponseParser
-   ListenableFuture<Void> disableDownload(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#enableDownload(URI)
-    */
-   @POST
-   @Consumes(TASK)
-   @Path("/action/enableDownload")
-   @JAXBResponseParser
-   ListenableFuture<Task> enableDownload(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#getCustomizationSection(URI)
-    */
-   @GET
-   @Consumes(CUSTOMIZATION_SECTION)
-   @Path("/customizationSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<CustomizationSection> 
getCustomizationSection(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#getLeaseSettingsSection(URI)
-    */
-   @GET
-   @Consumes(LEASE_SETTINGS_SECTION)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<LeaseSettingsSection> 
getLeaseSettingsSection(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#editLeaseSettingsSection(URI, LeaseSettingsSection)
-    */
-   @PUT
-   @Produces(LEASE_SETTINGS_SECTION)
-   @Consumes(TASK)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   ListenableFuture<Task> editLeaseSettingsSection(@EndpointParam URI 
templateHref,
-            @BinderParam(BindToXMLPayload.class) LeaseSettingsSection 
settingsSection);
-
-   /**
-    * @see VAppTemplateApi#getNetworkConfigSection(URI)
-    */
-   @GET
-   @Consumes(NETWORK_CONFIG_SECTION)
-   @Path("/networkConfigSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<NetworkConfigSection> 
getNetworkConfigSection(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#getNetworkSection(URI)
-    */
-   @GET
-   @Consumes(NETWORK_SECTION)
-   @Path("/networkSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<NetworkSection> getNetworkSection(@EndpointParam URI 
templateHref);
-
-   /**
-    * @see VAppTemplateApi#getOvf(URI)
-    */
-   @GET
-   @Consumes
-   @Path("/ovf")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Envelope> getOvf(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#getOwnerOfVAppTemplate(URI)
-    */
-   @GET
-   @Consumes(OWNER)
-   @Path("/owner")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<Owner> getOwner(@EndpointParam URI templateHref);
-
-   /**
-    * @see VAppTemplateApi#getProductSectionsForVAppTemplate(URI)
-    */
-   @GET
-   @Consumes(PRODUCT_SECTION_LIST)
-   @Path("/productSections")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<ProductSectionList> getProductSections(@EndpointParam URI 
templateHref);
-
-   /**
-    * @see VAppTemplateApi#editProductSections(URI, ProductSectionList)
-    */
-   @PUT
-   @Produces(PRODUCT_SECTION_LIST)
-   @Consumes(TASK)
-   @Path("/productSections")
-   @JAXBResponseParser
-   ListenableFuture<Task> editProductSections(@EndpointParam URI templateHref,
-            @BinderParam(BindToXMLPayload.class) ProductSectionList sections);
-
-   /**
-    * @see VAppTemplateApi#getShadowVms(URI)
-    */
-   @GET
-   @Consumes
-   @Path("/shadowVms")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<References> getShadowVms(@EndpointParam URI templateHref);
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcApi.java
----------------------------------------------------------------------
diff --git 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcApi.java
 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcApi.java
index d48e400..ae850e3 100644
--- 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcApi.java
+++ 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcApi.java
@@ -16,8 +16,31 @@
  */
 package org.jclouds.vcloud.director.v1_5.features;
 
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CLONE_MEDIA_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CLONE_VAPP_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.INSTANTIATE_VAPP_TEMPLATE_PARAMS;
+import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.MEDIA;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.UPLOAD_VAPP_TEMPLATE_PARAMS;
+import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VAPP;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VAPP_TEMPLATE;
+
 import java.net.URI;
 
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.Fallback;
+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.Media;
 import org.jclouds.vcloud.director.v1_5.domain.VApp;
 import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
@@ -29,12 +52,10 @@ import 
org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
 import org.jclouds.vcloud.director.v1_5.domain.params.ComposeVAppParams;
 import org.jclouds.vcloud.director.v1_5.domain.params.InstantiateVAppParams;
 import org.jclouds.vcloud.director.v1_5.domain.params.UploadVAppTemplateParams;
+import 
org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
+import org.jclouds.vcloud.director.v1_5.functions.URNToHref;
 
-/**
- * Provides synchronous access to a vDC.
- * 
- * @see VdcAsyncApi
- */
+@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface VdcApi {
 
    /**
@@ -42,9 +63,17 @@ public interface VdcApi {
     * 
     * @return the vdc or null if not found
     */
-   Vdc get(String vdcUrn);
-   
-   Vdc get(URI vdcHref);
+   @GET
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   Vdc get(@EndpointParam(parser = URNToHref.class) String vdcUrn);
+
+   @GET
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   Vdc get(@EndpointParam URI vdcHref);
    
    /**
     * Captures a vApp into vApp template.
@@ -56,9 +85,20 @@ public interface VdcApi {
     * @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(String vdcUrn, CaptureVAppParams params);
-   
-   VAppTemplate captureVApp(URI vdcHref, CaptureVAppParams params);
+   @POST
+   @Path("/action/captureVApp")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(CAPTURE_VAPP_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate captureVApp(@EndpointParam(parser = URNToHref.class) String 
vdcUrn,
+         @BinderParam(BindToXMLPayload.class) CaptureVAppParams params);
+
+   @POST
+   @Path("/action/captureVApp")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(CAPTURE_VAPP_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate captureVApp(@EndpointParam URI vdcHref, 
@BinderParam(BindToXMLPayload.class) CaptureVAppParams params);
 
    /**
     * Clones a media into new one.
@@ -70,9 +110,20 @@ public interface VdcApi {
     * @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(String vdcUrn, CloneMediaParams params);
-   
-   Media cloneMedia(URI vdcHref, CloneMediaParams params);
+   @POST
+   @Path("/action/cloneMedia")
+   @Consumes(MEDIA)
+   @Produces(CLONE_MEDIA_PARAMS)
+   @JAXBResponseParser
+   Media cloneMedia(@EndpointParam(parser = URNToHref.class) String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) CloneMediaParams params);
+
+   @POST
+   @Path("/action/cloneMedia")
+   @Consumes(MEDIA)
+   @Produces(CLONE_MEDIA_PARAMS)
+   @JAXBResponseParser
+   Media cloneMedia(@EndpointParam URI vdcHref, 
@BinderParam(BindToXMLPayload.class) CloneMediaParams params);
 
    /**
     * Clones a vApp into new one.
@@ -83,9 +134,22 @@ public interface VdcApi {
     * @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(String vdcUrn, CloneVAppParams params);
-   
-   VApp cloneVApp(URI vdcHref, CloneVAppParams params);
+   @POST
+   @Path("/action/cloneVApp")
+   @Consumes(VAPP)
+   @Produces(CLONE_VAPP_PARAMS)
+   // TODO fix these etc.
+   @JAXBResponseParser
+   VApp cloneVApp(@EndpointParam(parser = URNToHref.class) String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) CloneVAppParams params);
+
+   @POST
+   @Path("/action/cloneVApp")
+   @Consumes(VAPP)
+   @Produces(CLONE_VAPP_PARAMS)
+   // TODO fix these etc.
+   @JAXBResponseParser
+   VApp cloneVApp(@EndpointParam URI vdcHref, 
@BinderParam(BindToXMLPayload.class) CloneVAppParams params);
 
    /**
     * Clones a vApp template into new one.
@@ -97,9 +161,21 @@ public interface VdcApi {
     * @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(String vdcUrn, CloneVAppTemplateParams 
params);
-   
-   VAppTemplate cloneVAppTemplate(URI vdcHref, CloneVAppTemplateParams params);
+   @POST
+   @Path("/action/cloneVAppTemplate")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(VCloudDirectorMediaType.CLONE_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate cloneVAppTemplate(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) CloneVAppTemplateParams params);
+
+   @POST
+   @Path("/action/cloneVAppTemplate")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(VCloudDirectorMediaType.CLONE_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate cloneVAppTemplate(@EndpointParam URI vdcHref,
+         @BinderParam(BindToXMLPayload.class) CloneVAppTemplateParams params);
 
    /**
     * Composes a new vApp using VMs from other vApps or vApp templates.
@@ -131,9 +207,21 @@ public interface VdcApi {
     * @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(String vdcUrn, ComposeVAppParams params);
-   
-   VApp composeVApp(URI vdcHref, ComposeVAppParams params);
+   @POST
+   @Path("/action/composeVApp")
+   @Consumes(VAPP)
+   @Produces(VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS)
+   @JAXBResponseParser
+   VApp composeVApp(@EndpointParam(parser = URNToHref.class) String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) ComposeVAppParams params);
+
+   @POST
+   @Path("/action/composeVApp")
+   @Consumes(VAPP)
+   @Produces(VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS)
+   @JAXBResponseParser
+   VApp composeVApp(@EndpointParam URI vdcHref,
+         @BinderParam(BindToXMLPayload.class) ComposeVAppParams params);
 
    /**
     * Instantiate a vApp template into a new vApp.
@@ -148,9 +236,21 @@ public interface VdcApi {
     * @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(String vdcUrn, InstantiateVAppParams params);
-   
-   VApp instantiateVApp(URI vdcHref, InstantiateVAppParams params);
+   @POST
+   @Path("/action/instantiateVAppTemplate")
+   @Consumes(VAPP)
+   @Produces(INSTANTIATE_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VApp instantiateVApp(@EndpointParam(parser = URNToHref.class) String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) InstantiateVAppParams params);
+
+   @POST
+   @Path("/action/instantiateVAppTemplate")
+   @Consumes(VAPP)
+   @Produces(INSTANTIATE_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VApp instantiateVApp(@EndpointParam URI vdcHref,
+         @BinderParam(BindToXMLPayload.class) InstantiateVAppParams params);
 
    /**
     * Uploading vApp template to a vDC.
@@ -171,16 +271,39 @@ public interface VdcApi {
     * @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(String vdcUrn, UploadVAppTemplateParams 
params);
-   
-   VAppTemplate uploadVAppTemplate(URI vdcHref, UploadVAppTemplateParams 
params);
+   @POST
+   @Path("/action/uploadVAppTemplate")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(UPLOAD_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate uploadVAppTemplate(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) UploadVAppTemplateParams params);
+
+   @POST
+   @Path("/action/uploadVAppTemplate")
+   @Consumes(VAPP_TEMPLATE)
+   @Produces(UPLOAD_VAPP_TEMPLATE_PARAMS)
+   @JAXBResponseParser
+   VAppTemplate uploadVAppTemplate(@EndpointParam URI vdcHref,
+         @BinderParam(BindToXMLPayload.class) 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 addMedia(String vdcUrn, Media media);
-   
-   Media addMedia(URI vdcHref, Media media);
+   @POST
+   @Path("/media")
+   @Consumes(MEDIA)
+   @Produces(MEDIA)
+   @JAXBResponseParser
+   Media addMedia(@EndpointParam(parser = URNToHref.class) String vdcUrn,
+         @BinderParam(BindToXMLPayload.class) Media media);
+
+   @POST
+   @Path("/media")
+   @Consumes(MEDIA)
+   @Produces(MEDIA)
+   @JAXBResponseParser
+   Media addMedia(@EndpointParam URI vdcHref, 
@BinderParam(BindToXMLPayload.class) Media media);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncApi.java
----------------------------------------------------------------------
diff --git 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncApi.java
 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncApi.java
deleted file mode 100644
index 626e4e8..0000000
--- 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VdcAsyncApi.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF 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.features;
-
-import java.net.URI;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.rest.annotations.BinderParam;
-import org.jclouds.rest.annotations.EndpointParam;
-import org.jclouds.rest.annotations.Fallback;
-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.Media;
-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.params.CaptureVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneMediaParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.CloneVAppTemplateParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.ComposeVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.InstantiateVAppParams;
-import org.jclouds.vcloud.director.v1_5.domain.params.UploadVAppTemplateParams;
-import 
org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToHref;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-/**
- * @see VdcApi
- */
-@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
-public interface VdcAsyncApi {
-
-   /**
-    * @see VdcApi#get(String)
-    */
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<? extends Vdc> get(@EndpointParam(parser = 
URNToHref.class) String vdcUrn);
-
-   /**
-    * @see VdcApi#captureVApp(String, CaptureVAppParams)
-    */
-   @POST
-   @Path("/action/captureVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> captureVApp(@EndpointParam(parser = 
URNToHref.class) String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) CaptureVAppParams params);
-
-   /**
-    * @see VdcApi#cloneMedia(String, CloneMediaParams)
-    */
-   @POST
-   @Path("/action/cloneMedia")
-   @Consumes(VCloudDirectorMediaType.MEDIA)
-   @Produces(VCloudDirectorMediaType.CLONE_MEDIA_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<Media> cloneMedia(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) CloneMediaParams params);
-
-   /**
-    * @see VdcApi#cloneVApp(String, CloneVAppParams)
-    */
-   @POST
-   @Path("/action/cloneVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.CLONE_VAPP_PARAMS)
-   // TODO fix these etc.
-   @JAXBResponseParser
-   ListenableFuture<VApp> cloneVApp(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) CloneVAppParams params);
-
-   /**
-    * @see VdcApi#cloneVAppTemplate(String, CloneVAppTemplateParams)
-    */
-   @POST
-   @Path("/action/cloneVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.CLONE_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> cloneVAppTemplate(@EndpointParam(parser = 
URNToHref.class) String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) CloneVAppTemplateParams 
params);
-
-   /**
-    * @see VdcApi#composeVApp(String, ComposeVAppParams)
-    */
-   @POST
-   @Path("/action/composeVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VApp> composeVApp(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) ComposeVAppParams params);
-
-   /**
-    * @see VdcApi#instantiateVApp(String, InstantiateVAppParamsType)
-    */
-   @POST
-   @Path("/action/instantiateVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.INSTANTIATE_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VApp> instantiateVApp(@EndpointParam(parser = 
URNToHref.class) String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) InstantiateVAppParams params);
-
-   /**
-    * @see VdcApi#uploadVAppTemplate(String, UploadVAppTemplateParams)
-    */
-   @POST
-   @Path("/action/uploadVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.UPLOAD_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> uploadVAppTemplate(@EndpointParam(parser = 
URNToHref.class) String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) UploadVAppTemplateParams 
params);
-
-   /**
-    * @see VdcApi#addMedia(String, Media)
-    */
-   @POST
-   @Path("/media")
-   @Consumes(VCloudDirectorMediaType.MEDIA)
-   @Produces(VCloudDirectorMediaType.MEDIA)
-   @JAXBResponseParser
-   ListenableFuture<Media> addMedia(@EndpointParam(parser = URNToHref.class) 
String vdcUrn,
-            @BinderParam(BindToXMLPayload.class) Media media);
-
-   /**
-    * @see VdcApi#get(URI)
-    */
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ListenableFuture<? extends Vdc> get(@EndpointParam URI vdcHref);
-
-   /**
-    * @see VdcApi#captureVApp(URI, CaptureVAppParams)
-    */
-   @POST
-   @Path("/action/captureVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.CAPTURE_VAPP_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> captureVApp(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) CaptureVAppParams params);
-
-   /**
-    * @see VdcApi#cloneMedia(URI, CloneMediaParams)
-    */
-   @POST
-   @Path("/action/cloneMedia")
-   @Consumes(VCloudDirectorMediaType.MEDIA)
-   @Produces(VCloudDirectorMediaType.CLONE_MEDIA_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<Media> cloneMedia(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) CloneMediaParams params);
-
-   /**
-    * @see VdcApi#cloneVApp(URI, CloneVAppParams)
-    */
-   @POST
-   @Path("/action/cloneVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.CLONE_VAPP_PARAMS)
-   // TODO fix these etc.
-   @JAXBResponseParser
-   ListenableFuture<VApp> cloneVApp(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) CloneVAppParams params);
-
-   /**
-    * @see VdcApi#cloneVAppTemplate(URI, CloneVAppTemplateParams)
-    */
-   @POST
-   @Path("/action/cloneVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.CLONE_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> cloneVAppTemplate(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) CloneVAppTemplateParams 
params);
-
-   /**
-    * @see VdcApi#composeVApp(URI, ComposeVAppParams)
-    */
-   @POST
-   @Path("/action/composeVApp")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.COMPOSE_VAPP_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VApp> composeVApp(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) ComposeVAppParams params);
-
-   /**
-    * @see VdcApi#instantiateVApp(URI, InstantiateVAppParamsType)
-    */
-   @POST
-   @Path("/action/instantiateVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP)
-   @Produces(VCloudDirectorMediaType.INSTANTIATE_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VApp> instantiateVApp(@EndpointParam URI vdcHref,
-            @BinderParam(BindToXMLPayload.class) InstantiateVAppParams params);
-
-   /**
-    * @see VdcApi#uploadVAppTemplate(URI, UploadVAppTemplateParams)
-    */
-   @POST
-   @Path("/action/uploadVAppTemplate")
-   @Consumes(VCloudDirectorMediaType.VAPP_TEMPLATE)
-   @Produces(VCloudDirectorMediaType.UPLOAD_VAPP_TEMPLATE_PARAMS)
-   @JAXBResponseParser
-   ListenableFuture<VAppTemplate> uploadVAppTemplate(@EndpointParam URI 
vdcHref,
-            @BinderParam(BindToXMLPayload.class) UploadVAppTemplateParams 
params);
-
-   /**
-    * @see VdcApi#addMedia(URI, Media)
-    */
-   @POST
-   @Path("/media")
-   @Consumes(VCloudDirectorMediaType.MEDIA)
-   @Produces(VCloudDirectorMediaType.MEDIA)
-   @JAXBResponseParser
-   ListenableFuture<Media> addMedia(@EndpointParam URI vdcHref, 
@BinderParam(BindToXMLPayload.class) Media media);
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/d7bc430c/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VmApi.java
----------------------------------------------------------------------
diff --git 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VmApi.java
 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VmApi.java
index 61b700a..5b14541 100644
--- 
a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VmApi.java
+++ 
b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VmApi.java
@@ -16,8 +16,40 @@
  */
 package org.jclouds.vcloud.director.v1_5.features;
 
+import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.ANY_IMAGE;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.DEPLOY_VAPP_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.GUEST_CUSTOMIZATION_SECTION;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.MEDIA_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NETWORK_CONNECTION_SECTION;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OPERATING_SYSTEM_SECTION;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OVF_RASD_ITEM;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OVF_RASD_ITEMS_LIST;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.PRODUCT_SECTION_LIST;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.RELOCATE_VM_PARAMS;
+import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.TASK;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.UNDEPLOY_VAPP_PARAMS;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VIRTUAL_HARDWARE_SECTION;
+import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VM;
+import static 
org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.VM_PENDING_ANSWER;
+
 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.Produces;
+
+import org.jclouds.rest.annotations.BinderParam;
+import org.jclouds.rest.annotations.EndpointParam;
+import org.jclouds.rest.annotations.Fallback;
+import org.jclouds.rest.annotations.JAXBResponseParser;
+import org.jclouds.rest.annotations.RequestFilters;
+import org.jclouds.rest.annotations.ResponseParser;
+import org.jclouds.rest.binders.BindToXMLPayload;
 import org.jclouds.vcloud.director.v1_5.domain.ProductSectionList;
 import org.jclouds.vcloud.director.v1_5.domain.RasdItemsList;
 import org.jclouds.vcloud.director.v1_5.domain.ScreenTicket;
@@ -35,13 +67,11 @@ import 
org.jclouds.vcloud.director.v1_5.domain.section.NetworkConnectionSection;
 import org.jclouds.vcloud.director.v1_5.domain.section.OperatingSystemSection;
 import org.jclouds.vcloud.director.v1_5.domain.section.RuntimeInfoSection;
 import org.jclouds.vcloud.director.v1_5.domain.section.VirtualHardwareSection;
+import 
org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
+import org.jclouds.vcloud.director.v1_5.functions.ReturnPayloadBytes;
+import org.jclouds.vcloud.director.v1_5.functions.URNToHref;
 
-/**
- * Provides synchronous access to {@link Vm} objects.
- * 
- * @see VmAsyncApi
- * @version 1.5
- */
+@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface VmApi {
 
    /**
@@ -50,19 +80,35 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#get(String)
     */
-   Vm get(String vmUrn);
-
-   Vm get(URI vmHref);
+   @GET
+   @Consumes(VM)
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   Vm get(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @GET
+   @Consumes(VM)
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   Vm get(@EndpointParam URI vmHref);
 
    /**
     * Modifies the name/description of a {@link Vm}.
     * 
     * @since 0.9
-    * @see VAppApi#edit(String, VApp)
     */
-   Task edit(String vmUrn, Vm vm);
-
-   Task edit(URI vmHref, Vm vm);
+   @PUT
+   @Produces(VM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task edit(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) Vm vApp);
+
+   @PUT
+   @Produces(VM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task edit(@EndpointParam URI vmHref, @BinderParam(BindToXMLPayload.class) 
Vm vApp);
 
    /**
     * Deletes a {@link Vm}.
@@ -70,9 +116,15 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#remove(String)
     */
-   Task remove(String vmUrn);
+   @DELETE
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task remove(@EndpointParam(parser = URNToHref.class) String vmUrn);
 
-   Task remove(URI vmHref);
+   @DELETE
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task remove(@EndpointParam URI vmHref);
 
    /**
     * Consolidates a {@link Vm}.
@@ -83,9 +135,17 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   Task consolidate(String vmUrn);
-
-   Task consolidate(URI vmHref);
+   @POST
+   @Path("/action/consolidate")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task consolidate(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/action/consolidate")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task consolidate(@EndpointParam URI vmHref);
 
    /**
     * Deploys a {@link Vm}.
@@ -93,9 +153,20 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#deploy(String, DeployVAppParams)
     */
-   Task deploy(String vmUrn, DeployVAppParams params);
-
-   Task deploy(URI vmHref, DeployVAppParams params);
+   @POST
+   @Path("/action/deploy")
+   @Produces(DEPLOY_VAPP_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task deploy(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) DeployVAppParams params);
+
+   @POST
+   @Path("/action/deploy")
+   @Produces(DEPLOY_VAPP_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task deploy(@EndpointParam URI vmHref, @BinderParam(BindToXMLPayload.class) 
DeployVAppParams params);
 
    /**
     * Discard suspended state of a {@link Vm}.
@@ -103,9 +174,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#discardSuspendedState(String)
     */
-   Task discardSuspendedState(String vmUrn);
-
-   Task discardSuspendedState(URI vmHref);
+   @POST
+   @Path("/action/discardSuspendedState")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task discardSuspendedState(@EndpointParam(parser = URNToHref.class) String 
vmUrn);
+
+   @POST
+   @Path("/action/discardSuspendedState")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task discardSuspendedState(@EndpointParam URI vmHref);
 
    /**
     * Installs VMware tools to the virtual machine.
@@ -118,9 +197,17 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   Task installVMwareTools(String vmUrn);
-
-   Task installVMwareTools(URI vmHref);
+   @POST
+   @Path("/action/installVMwareTools")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task installVMwareTools(@EndpointParam(parser = URNToHref.class) String 
vmUrn);
+
+   @POST
+   @Path("/action/installVMwareTools")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task installVMwareTools(@EndpointParam URI vmHref);
 
    /**
     * Relocates a {@link Vm}.
@@ -131,9 +218,20 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   Task relocate(String vmUrn, RelocateParams params);
-
-   Task relocate(URI vmHref, RelocateParams params);
+   @POST
+   @Path("/action/relocate")
+   @Produces(RELOCATE_VM_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task relocate(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RelocateParams params);
+
+   @POST
+   @Path("/action/relocate")
+   @Produces(RELOCATE_VM_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task relocate(@EndpointParam URI vmHref, 
@BinderParam(BindToXMLPayload.class) RelocateParams params);
 
    /**
     * Undeploy a {@link Vm}.
@@ -141,9 +239,21 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#undeploy(String, UndeployVAppParams)
     */
-   Task undeploy(String vmUrn, UndeployVAppParams params);
-
-   Task undeploy(URI vmHref, UndeployVAppParams params);
+   @POST
+   @Path("/action/undeploy")
+   @Produces(UNDEPLOY_VAPP_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task undeploy(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) UndeployVAppParams params);
+
+   @POST
+   @Path("/action/undeploy")
+   @Produces(UNDEPLOY_VAPP_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task undeploy(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) UndeployVAppParams params);
 
    /**
     * Upgrade virtual hardware version of a VM to the highest supported 
virtual hardware version of
@@ -155,9 +265,17 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   Task upgradeHardwareVersion(String vmUrn);
-
-   Task upgradeHardwareVersion(URI vmHref);
+   @POST
+   @Path("/action/upgradeHardwareVersion")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task upgradeHardwareVersion(@EndpointParam(parser = URNToHref.class) String 
vmUrn);
+
+   @POST
+   @Path("/action/upgradeHardwareVersion")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task upgradeHardwareVersion(@EndpointParam URI vmHref);
 
    /**
     * Powers off a {@link Vm}.
@@ -165,9 +283,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#powerOff(String)
     */
-   Task powerOff(String vmUrn);
-
-   Task powerOff(URI vmHref);
+   @POST
+   @Path("/power/action/powerOff")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task powerOff(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/powerOff")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task powerOff(@EndpointParam URI vmHref);
 
    /**
     * Powers on a {@link Vm}.
@@ -175,9 +301,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#powerOn(String)
     */
-   Task powerOn(String vmUrn);
-
-   Task powerOn(URI vmHref);
+   @POST
+   @Path("/power/action/powerOn")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task powerOn(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/powerOn")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task powerOn(@EndpointParam URI vmHref);
 
    /**
     * Reboots a {@link Vm}.
@@ -185,9 +319,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#reboot(String)
     */
-   Task reboot(String vmUrn);
-
-   Task reboot(URI vmHref);
+   @POST
+   @Path("/power/action/reboot")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task reboot(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/reboot")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task reboot(@EndpointParam URI vmHref);
 
    /**
     * Resets a {@link Vm}.
@@ -195,9 +337,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#reset(String)
     */
-   Task reset(String vmUrn);
-
-   Task reset(URI vmHref);
+   @POST
+   @Path("/power/action/reset")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task reset(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/reset")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task reset(@EndpointParam URI vmHref);
 
    /**
     * Shuts down a {@link Vm}.
@@ -205,9 +355,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#shutdown(String)
     */
-   Task shutdown(String vmUrn);
-
-   Task shutdown(URI vmHref);
+   @POST
+   @Path("/power/action/shutdown")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task shutdown(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/shutdown")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task shutdown(@EndpointParam URI vmHref);
 
    /**
     * Suspends a {@link Vm}.
@@ -215,9 +373,17 @@ public interface VmApi {
     * @since 0.9
     * @see VAppApi#suspend(String)
     */
-   Task suspend(String vmUrn);
-
-   Task suspend(URI vmHref);
+   @POST
+   @Path("/power/action/suspend")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task suspend(@EndpointParam(parser = URNToHref.class) String vmUrn);
+
+   @POST
+   @Path("/power/action/suspend")
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task suspend(@EndpointParam URI vmHref);
 
    /**
     * Retrieves the guest customization section of a {@link Vm}.
@@ -228,9 +394,19 @@ public interface VmApi {
     * 
     * @since 1.0
     */
-   GuestCustomizationSection getGuestCustomizationSection(String vmUrn);
-
-   GuestCustomizationSection getGuestCustomizationSection(URI vmHref);
+   @GET
+   @Path("/guestCustomizationSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   GuestCustomizationSection 
getGuestCustomizationSection(@EndpointParam(parser = URNToHref.class) String 
vmUrn);
+
+   @GET
+   @Path("/guestCustomizationSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   GuestCustomizationSection getGuestCustomizationSection(@EndpointParam URI 
vmHref);
 
    /**
     * Modifies the guest customization section of a {@link Vm}.
@@ -241,9 +417,21 @@ public interface VmApi {
     * 
     * @since 1.0
     */
-   Task editGuestCustomizationSection(String vmUrn, GuestCustomizationSection 
section);
-
-   Task editGuestCustomizationSection(URI vmHref, GuestCustomizationSection 
section);
+   @PUT
+   @Path("/guestCustomizationSection")
+   @Produces(GUEST_CUSTOMIZATION_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editGuestCustomizationSection(@EndpointParam(parser = URNToHref.class) 
String vmUrn,
+         @BinderParam(BindToXMLPayload.class) GuestCustomizationSection 
section);
+
+   @PUT
+   @Path("/guestCustomizationSection")
+   @Produces(GUEST_CUSTOMIZATION_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editGuestCustomizationSection(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) GuestCustomizationSection 
section);
 
    /**
     * Ejects media from a {@link Vm}.
@@ -254,9 +442,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task ejectMedia(String vmUrn, MediaInsertOrEjectParams mediaParams);
-
-   Task ejectMedia(URI vmHref, MediaInsertOrEjectParams mediaParams);
+   @POST
+   @Path("/media/action/ejectMedia")
+   @Produces(MEDIA_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task ejectMedia(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams 
mediaParams);
+
+   @POST
+   @Path("/media/action/ejectMedia")
+   @Produces(MEDIA_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task ejectMedia(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams 
mediaParams);
 
    /**
     * Insert media into a {@link Vm}.
@@ -267,9 +467,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task insertMedia(String vmUrn, MediaInsertOrEjectParams mediaParams);
-
-   Task insertMedia(URI vmHref, MediaInsertOrEjectParams mediaParams);
+   @POST
+   @Path("/media/action/insertMedia")
+   @Produces(MEDIA_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task insertMedia(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams 
mediaParams);
+
+   @POST
+   @Path("/media/action/insertMedia")
+   @Produces(MEDIA_PARAMS)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task insertMedia(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams 
mediaParams);
 
    /**
     * Retrieves the network connection section of a {@link Vm}.
@@ -280,9 +492,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   NetworkConnectionSection getNetworkConnectionSection(String vmUrn);
-
-   NetworkConnectionSection getNetworkConnectionSection(URI vmHref);
+   @GET
+   @Path("/networkConnectionSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   NetworkConnectionSection getNetworkConnectionSection(@EndpointParam(parser 
= URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/networkConnectionSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   NetworkConnectionSection getNetworkConnectionSection(@EndpointParam URI 
vmHref);
 
    /**
     * Modifies the network connection section of a {@link Vm}.
@@ -293,9 +515,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editNetworkConnectionSection(String vmUrn, NetworkConnectionSection 
section);
-
-   Task editNetworkConnectionSection(URI vmHref, NetworkConnectionSection 
section);
+   @PUT
+   @Path("/networkConnectionSection")
+   @Produces(NETWORK_CONNECTION_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editNetworkConnectionSection(@EndpointParam(parser = URNToHref.class) 
String vmUrn,
+         @BinderParam(BindToXMLPayload.class) NetworkConnectionSection 
section);
+
+   @PUT
+   @Path("/networkConnectionSection")
+   @Produces(NETWORK_CONNECTION_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editNetworkConnectionSection(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) NetworkConnectionSection 
section);
 
    /**
     * Retrieves the operating system section of a {@link Vm}.
@@ -306,9 +540,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   OperatingSystemSection getOperatingSystemSection(String vmUrn);
-
-   OperatingSystemSection getOperatingSystemSection(URI vmHref);
+   @GET
+   @Path("/operatingSystemSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   OperatingSystemSection getOperatingSystemSection(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/operatingSystemSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   OperatingSystemSection getOperatingSystemSection(@EndpointParam URI vmHref);
 
    /**
     * Modifies the operating system section of a {@link Vm}.
@@ -319,9 +563,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editOperatingSystemSection(String vmUrn, OperatingSystemSection 
section);
-
-   Task editOperatingSystemSection(URI vmHref, OperatingSystemSection section);
+   @PUT
+   @Path("/operatingSystemSection")
+   @Produces(OPERATING_SYSTEM_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editOperatingSystemSection(@EndpointParam(parser = URNToHref.class) 
String vmUrn,
+         @BinderParam(BindToXMLPayload.class) OperatingSystemSection section);
+
+   @PUT
+   @Path("/operatingSystemSection")
+   @Produces(OPERATING_SYSTEM_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editOperatingSystemSection(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) OperatingSystemSection section);
 
    /**
     * Retrieves {@link Vm} product sections.
@@ -329,9 +585,19 @@ public interface VmApi {
     * @since 1.5
     * @see VAppApi#getProductSections(String)
     */
-   ProductSectionList getProductSections(String vmUrn);
-
-   ProductSectionList getProductSections(URI vmHref);
+   @GET
+   @Path("/productSections")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   ProductSectionList getProductSections(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/productSections")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   ProductSectionList getProductSections(@EndpointParam URI vmHref);
 
    /**
     * Modifies the product section information of a {@link Vm}.
@@ -339,9 +605,21 @@ public interface VmApi {
     * @since 1.5
     * @see VAppApi#editProductSections(String, ProductSectionList)
     */
-   Task editProductSections(String vmUrn, ProductSectionList sectionList);
-
-   Task editProductSections(URI vmHref, ProductSectionList sectionList);
+   @PUT
+   @Path("/productSections")
+   @Produces(PRODUCT_SECTION_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editProductSections(@EndpointParam(parser = URNToHref.class) String 
vmUrn,
+         @BinderParam(BindToXMLPayload.class) ProductSectionList sectionList);
+
+   @PUT
+   @Path("/productSections")
+   @Produces(PRODUCT_SECTION_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editProductSections(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) ProductSectionList sectionList);
 
    /**
     * Retrieves a pending question for a {@link Vm}.
@@ -356,9 +634,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   VmPendingQuestion getPendingQuestion(String vmUrn);
-
-   VmPendingQuestion getPendingQuestion(URI vmHref);
+   @GET
+   @Path("/question")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   VmPendingQuestion getPendingQuestion(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/question")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   VmPendingQuestion getPendingQuestion(@EndpointParam URI vmHref);
 
    /**
     * Answer a pending question on a {@link Vm}.
@@ -372,9 +660,20 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   void answerQuestion(String vmUrn, VmQuestionAnswer answer);
-
-   void answerQuestion(URI vmHref, VmQuestionAnswer answer);
+   @POST
+   @Path("/question/action/answer")
+   @Produces(VM_PENDING_ANSWER)
+   @Consumes
+   @JAXBResponseParser
+   void answerQuestion(@EndpointParam(parser = URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) VmQuestionAnswer answer);
+
+   @POST
+   @Path("/question/action/answer")
+   @Produces(VM_PENDING_ANSWER)
+   @Consumes
+   @JAXBResponseParser
+   void answerQuestion(@EndpointParam URI vmHref, 
@BinderParam(BindToXMLPayload.class) VmQuestionAnswer answer);
 
    /**
     * Retrieves the runtime info section of a {@link Vm}.
@@ -385,9 +684,19 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   RuntimeInfoSection getRuntimeInfoSection(String vmUrn);
-
-   RuntimeInfoSection getRuntimeInfoSection(URI vmHref);
+   @GET
+   @Path("/runtimeInfoSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RuntimeInfoSection getRuntimeInfoSection(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/runtimeInfoSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RuntimeInfoSection getRuntimeInfoSection(@EndpointParam URI vmHref);
 
    /**
     * Retrieves the thumbnail of the screen of a {@link Vm}.
@@ -400,9 +709,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   byte[] getScreenImage(String vmUrn);
-
-   byte[] getScreenImage(URI vmHref);
+   @GET
+   @Path("/screen")
+   @Consumes(ANY_IMAGE)
+   @Fallback(NullOnNotFoundOr404.class)
+   @ResponseParser(ReturnPayloadBytes.class)
+   byte[] getScreenImage(@EndpointParam(parser = URNToHref.class) String 
vmUrn);
+
+   @GET
+   @Path("/screen")
+   @Consumes(ANY_IMAGE)
+   @Fallback(NullOnNotFoundOr404.class)
+   @ResponseParser(ReturnPayloadBytes.class)
+   byte[] getScreenImage(@EndpointParam URI vmHref);
 
    /**
     * Retrieve a screen ticket for remote console connection to a {@link Vm}.
@@ -420,9 +739,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   ScreenTicket getScreenTicket(String vmUrn);
-
-   ScreenTicket getScreenTicket(URI vmHref);
+   @POST
+   @Path("/screen/action/acquireTicket")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   ScreenTicket getScreenTicket(@EndpointParam(parser = URNToHref.class) 
String vmUrn);
+
+   @POST
+   @Path("/screen/action/acquireTicket")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   ScreenTicket getScreenTicket(@EndpointParam URI vmHref);
 
    /**
     * Retrieves the virtual hardware section of a {@link Vm}.
@@ -433,9 +762,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   VirtualHardwareSection getVirtualHardwareSection(String vmUrn);
-
-   VirtualHardwareSection getVirtualHardwareSection(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   VirtualHardwareSection getVirtualHardwareSection(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   VirtualHardwareSection getVirtualHardwareSection(@EndpointParam URI vmHref);
 
    /**
     * Modifies the virtual hardware section of a {@link Vm}.
@@ -446,9 +785,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editVirtualHardwareSection(String vmUrn, VirtualHardwareSection 
section);
-
-   Task editVirtualHardwareSection(URI vmHref, VirtualHardwareSection section);
+   @PUT
+   @Path("/virtualHardwareSection")
+   @Produces(VIRTUAL_HARDWARE_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSection(@EndpointParam(parser = URNToHref.class) 
String vmUrn,
+         @BinderParam(BindToXMLPayload.class) VirtualHardwareSection section);
+
+   @PUT
+   @Path("/virtualHardwareSection")
+   @Produces(VIRTUAL_HARDWARE_SECTION)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSection(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) VirtualHardwareSection section);
 
    /**
     * Retrieves the CPU properties in virtual hardware section of a {@link Vm}.
@@ -459,9 +810,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   RasdItem getVirtualHardwareSectionCpu(String vmUrn);
-
-   RasdItem getVirtualHardwareSectionCpu(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/cpu")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItem getVirtualHardwareSectionCpu(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/cpu")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItem getVirtualHardwareSectionCpu(@EndpointParam URI vmHref);
 
    /**
     * Modifies the CPU properties in virtual hardware section of a {@link Vm}.
@@ -472,9 +833,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editVirtualHardwareSectionCpu(String vmUrn, RasdItem rasd);
-
-   Task editVirtualHardwareSectionCpu(URI vmHref, RasdItem rasd);
+   @PUT
+   @Path("/virtualHardwareSection/cpu")
+   @Produces(OVF_RASD_ITEM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionCpu(@EndpointParam(parser = URNToHref.class) 
String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RasdItem rasd);
+
+   @PUT
+   @Path("/virtualHardwareSection/cpu")
+   @Produces(OVF_RASD_ITEM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionCpu(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) RasdItem rasd);
 
    /**
     * Retrieves a list of items for disks from virtual hardware section of a 
{@link Vm}.
@@ -485,9 +858,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   RasdItemsList getVirtualHardwareSectionDisks(String vmUrn);
-
-   RasdItemsList getVirtualHardwareSectionDisks(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/disks")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionDisks(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/disks")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionDisks(@EndpointParam URI vmHref);
 
    /**
     * Modifies the disks list in virtual hardware section of a {@link Vm}.
@@ -498,9 +881,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editVirtualHardwareSectionDisks(String vmUrn, RasdItemsList 
rasdItemsList);
-
-   Task editVirtualHardwareSectionDisks(URI vmHref, RasdItemsList 
rasdItemsList);
+   @PUT
+   @Path("/virtualHardwareSection/disks")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionDisks(@EndpointParam(parser = 
URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
+
+   @PUT
+   @Path("/virtualHardwareSection/disks")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionDisks(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
 
    /**
     * Retrieves the list of items that represents the floppies and CD/DVD 
drives in a {@link Vm}.
@@ -511,9 +906,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   RasdItemsList getVirtualHardwareSectionMedia(String vmUrn);
-
-   RasdItemsList getVirtualHardwareSectionMedia(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/media")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionMedia(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/media")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionMedia(@EndpointParam URI vmHref);
 
    /**
     * Retrieves the item that contains memory information from virtual 
hardware section of a
@@ -525,9 +930,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   RasdItem getVirtualHardwareSectionMemory(String vmUrn);
-
-   RasdItem getVirtualHardwareSectionMemory(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/memory")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItem getVirtualHardwareSectionMemory(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/memory")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItem getVirtualHardwareSectionMemory(@EndpointParam URI vmHref);
 
    /**
     * Modifies the memory properties in virtual hardware section of a {@link 
Vm}.
@@ -538,9 +953,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editVirtualHardwareSectionMemory(String vmUrn, RasdItem rasd);
-
-   Task editVirtualHardwareSectionMemory(URI vmHref, RasdItem rasd);
+   @PUT
+   @Path("/virtualHardwareSection/memory")
+   @Produces(OVF_RASD_ITEM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionMemory(@EndpointParam(parser = 
URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RasdItem rasd);
+
+   @PUT
+   @Path("/virtualHardwareSection/memory")
+   @Produces(OVF_RASD_ITEM)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionMemory(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) RasdItem rasd);
 
    /**
     * Retrieves a list of items for network cards from virtual hardware 
section of a {@link Vm}.
@@ -551,9 +978,19 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   RasdItemsList getVirtualHardwareSectionNetworkCards(String vmUrn);
-
-   RasdItemsList getVirtualHardwareSectionNetworkCards(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/networkCards")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionNetworkCards(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/networkCards")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionNetworkCards(@EndpointParam URI 
vmHref);
 
    /**
     * Modifies the network cards list in virtual hardware section of a {@link 
Vm}.
@@ -564,9 +1001,21 @@ public interface VmApi {
     * 
     * @since 0.9
     */
-   Task editVirtualHardwareSectionNetworkCards(String vmUrn, RasdItemsList 
rasdItemsList);
-
-   Task editVirtualHardwareSectionNetworkCards(URI vmHref, RasdItemsList 
rasdItemsList);
+   @PUT
+   @Path("/virtualHardwareSection/networkCards")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionNetworkCards(@EndpointParam(parser = 
URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
+
+   @PUT
+   @Path("/virtualHardwareSection/networkCards")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionNetworkCards(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
 
    /**
     * Retrieves a list of items for serial ports from virtual hardware section 
of a {@link Vm}.
@@ -577,9 +1026,19 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   RasdItemsList getVirtualHardwareSectionSerialPorts(String vmUrn);
-
-   RasdItemsList getVirtualHardwareSectionSerialPorts(URI vmHref);
+   @GET
+   @Path("/virtualHardwareSection/serialPorts")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionSerialPorts(@EndpointParam(parser = 
URNToHref.class) String vmUrn);
+
+   @GET
+   @Path("/virtualHardwareSection/serialPorts")
+   @Consumes
+   @JAXBResponseParser
+   @Fallback(NullOnNotFoundOr404.class)
+   RasdItemsList getVirtualHardwareSectionSerialPorts(@EndpointParam URI 
vmHref);
 
    /**
     * Modifies the serial ports list in virtual hardware section of a {@link 
Vm}.
@@ -590,7 +1049,19 @@ public interface VmApi {
     * 
     * @since 1.5
     */
-   Task editVirtualHardwareSectionSerialPorts(String vmUrn, RasdItemsList 
rasdItemsList);
-
-   Task editVirtualHardwareSectionSerialPorts(URI vmHref, RasdItemsList 
rasdItemsList);
+   @PUT
+   @Path("/virtualHardwareSection/serialPorts")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionSerialPorts(@EndpointParam(parser = 
URNToHref.class) String vmUrn,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
+
+   @PUT
+   @Path("/virtualHardwareSection/serialPorts")
+   @Produces(OVF_RASD_ITEMS_LIST)
+   @Consumes(TASK)
+   @JAXBResponseParser
+   Task editVirtualHardwareSectionSerialPorts(@EndpointParam URI vmHref,
+         @BinderParam(BindToXMLPayload.class) RasdItemsList rasdItemsList);
 }

Reply via email to