You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ad...@apache.org on 2014/10/12 05:38:28 UTC

[5/9] Dedupe vcloud api calls and instead expose helper to resolve ids to hrefs. cleanup pass on javadoc.

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApi.java
index df1ad86..d9240f0 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/VAppTemplateApi.java
@@ -37,6 +37,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
 import org.jclouds.dmtf.ovf.NetworkSection;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.EndpointParam;
 import org.jclouds.rest.annotations.Fallback;
@@ -53,100 +54,28 @@ 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;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface VAppTemplateApi {
 
-   /**
-    * Retrieves a vApp template (can be used also to retrieve a VM from a vApp Template).
-    * 
-    * The vApp could be in one of these statues:
-    * <ul>
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#FAILED_CREATION
-    * FAILED_CREATION(-1)} - Transient entity state, e.g., model object is addd but the
-    * corresponding VC backing does not exist yet. This is further sub-categorized in the respective
-    * entities.
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED
-    * UNRESOLVED(0)} - Entity is whole, e.g., VM creation is complete and all the required model
-    * objects and VC backings are addd.
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#RESOLVED
-    * RESOLVED(1)} - Entity is resolved.
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNKNOWN
-    * UNKNOWN(6)} - Entity state could not be retrieved from the inventory, e.g., VM power state is
-    * null.
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_OFF
-    * POWERED_OFF(8)} - All VMs of the vApp template are powered off.
-    * <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#MIXED MIXED(10)}
-    * - vApp template status is set to {@code MIXED} when the VMs in the vApp are in different power
-    * states.
-    * </ul>
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the requested template
-    */
-   @GET
-   @Consumes(VAPP_TEMPLATE)
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   VAppTemplate get(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
+   /** Returns the vApp template or null if not found. */
    @GET
    @Consumes(VAPP_TEMPLATE)
    @JAXBResponseParser
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    VAppTemplate get(@EndpointParam URI reference);
 
    /**
     * Modifies only the name/description of a vApp template.
-    * 
-    * <pre>
-    * PUT /vAppTemplate/{id}
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @param template
-    *           the template containing the new name and/or description
-    * @return the task performing the action. This operation is asynchronous and the user should
-    *         monitor the returned task status in order to check when it is completed.
     */
    @PUT
    @Produces(VAPP_TEMPLATE)
    @Consumes(TASK)
    @JAXBResponseParser
-   Task edit(@EndpointParam(parser = URNToHref.class) String templateUrn,
-         @BinderParam(BindToXMLPayload.class) VAppTemplate template);
-
-   @PUT
-   @Produces(VAPP_TEMPLATE)
-   @Consumes(TASK)
-   @JAXBResponseParser
    Task edit(@EndpointParam URI templateHref,
          @BinderParam(BindToXMLPayload.class) VAppTemplate template);
 
-   /**
-    * Deletes a vApp template.
-    * 
-    * <pre>
-    * DELETE /vAppTemplate/{id}
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the task performing the action. This operation is asynchronous and the user should
-    *         monitor the returned task status in order to check when it is completed.
-    */
-   @DELETE
-   @Consumes(TASK)
-   @JAXBResponseParser
-   Task remove(@EndpointParam String templateUrn);
-
    @DELETE
    @Consumes(TASK)
    @JAXBResponseParser
@@ -154,123 +83,33 @@ public interface VAppTemplateApi {
 
    /**
     * Disables the download link to the ovf of a vApp template.
-    * 
-    * <pre>
-    * POST /vAppTemplate/{id}/action/disableDownload
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
     */
    @POST
    @Path("/action/disableDownload")
    @JAXBResponseParser
-   void disableDownload(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   @POST
-   @Path("/action/disableDownload")
-   @JAXBResponseParser
    void disableDownload(@EndpointParam URI templateHref);
 
    /**
     * Enables downloading of the ovf of a vApp template.
-    * 
-    * <pre>
-    * POST /vAppTemplate/{id}/action/enableDownload
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the task performing the action. This operation is asynchronous and the user should
-    *         monitor the returned task status in order to check when it is completed.
     */
    @POST
    @Consumes(TASK)
    @Path("/action/enableDownload")
    @JAXBResponseParser
-   Task enableDownload(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   @POST
-   @Consumes(TASK)
-   @Path("/action/enableDownload")
-   @JAXBResponseParser
    Task enableDownload(@EndpointParam URI templateHref);
 
-   /**
-    * Retrieves the customization section of a vApp template.
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/customizationSection
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the customization section
-    */
-   @GET
-   @Consumes(CUSTOMIZATION_SECTION)
-   @Path("/customizationSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   CustomizationSection getCustomizationSection(
-         @EndpointParam(parser = URNToHref.class) String templateUrn);
-
    @GET
    @Consumes(CUSTOMIZATION_SECTION)
    @Path("/customizationSection")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    CustomizationSection getCustomizationSection(@EndpointParam URI templateHref);
 
-   /**
-    * Retrieves the lease settings section of a vApp or vApp template
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/leaseSettingsSection
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the lease settings
-    */
-   @GET
-   @Consumes(LEASE_SETTINGS_SECTION)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   LeaseSettingsSection getLeaseSettingsSection(
-         @EndpointParam(parser = URNToHref.class) String templateUrn);
-
    @GET
    @Consumes(LEASE_SETTINGS_SECTION)
    @Path("/leaseSettingsSection")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    LeaseSettingsSection getLeaseSettingsSection(@EndpointParam URI templateHref);
 
-   /**
-    * Modifies the lease settings section of a vApp or vApp template.
-    * 
-    * <pre>
-    * PUT /vAppTemplate/{id}/leaseSettingsSection
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @param settingsSection
-    *           the new configuration to apply
-    * @return the task performing the action. This operation is asynchronous and the user should
-    *         monitor the returned task status in order to check when it is completed.
-    */
-   @PUT
-   @Produces(LEASE_SETTINGS_SECTION)
-   @Consumes(TASK)
-   @Path("/leaseSettingsSection")
-   @JAXBResponseParser
-   Task editLeaseSettingsSection(
-         @EndpointParam(parser = URNToHref.class) String templateUrn,
-         @BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection);
-
    @PUT
    @Produces(LEASE_SETTINGS_SECTION)
    @Consumes(TASK)
@@ -279,158 +118,43 @@ public interface VAppTemplateApi {
    Task editLeaseSettingsSection(@EndpointParam URI templateHref,
          @BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection);
 
-   /**
-    * Retrieves the network config section of a vApp or vApp template.
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/networkConfigSection
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the network config section requested
-    */
-   @GET
-   @Consumes(NETWORK_CONFIG_SECTION)
-   @Path("/networkConfigSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   NetworkConfigSection getNetworkConfigSection(
-         @EndpointParam(parser = URNToHref.class) String templateUrn);
-
    @GET
    @Consumes(NETWORK_CONFIG_SECTION)
    @Path("/networkConfigSection")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    NetworkConfigSection getNetworkConfigSection(@EndpointParam URI templateHref);
 
-   /**
-    * Retrieves the network section of a vApp or vApp template.
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/networkSection
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the network section requested
-    */
    @GET
    @Consumes(NETWORK_SECTION)
    @Path("/networkSection")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   NetworkSection getNetworkSection(
-         @EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   @GET
-   @Consumes(NETWORK_SECTION)
-   @Path("/networkSection")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    NetworkSection getNetworkSection(@EndpointParam URI templateHref);
 
    /**
     * Retrieves an OVF descriptor of a vApp template.
     * 
-    * This OVF represents the vApp template as it is, with all vCloud specific information (like mac
+    * <p/> This OVF represents the vApp template as it is, with all vCloud specific information (like mac
     * address, parent networks, etc). The OVF which could be downloaded by enabling for download
     * will not contain this information. There are no specific states bound to this entity.
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/ovf
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the ovf envelope
     */
    @GET
    @Consumes
    @Path("/ovf")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Envelope getOvf(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   @GET
-   @Consumes
-   @Path("/ovf")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    Envelope getOvf(@EndpointParam URI templateHref);
 
-   /**
-    * Retrieves vApp template owner.
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/owner
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the owner of the vApp template
-    */
    @GET
    @Consumes(OWNER)
    @Path("/owner")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Owner getOwner(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
-   @GET
-   @Consumes(OWNER)
-   @Path("/owner")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    Owner getOwner(@EndpointParam URI templateHref);
 
-   /**
-    * Retrieves VAppTemplate/VM product sections
-    * 
-    * <pre>
-    * GET /vAppTemplate/{id}/productSections
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the product sections
-    */
-   @GET
-   @Consumes(PRODUCT_SECTION_LIST)
-   @Path("/productSections")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ProductSectionList getProductSections(
-         @EndpointParam(parser = URNToHref.class) String templateUrn);
-
    @GET
    @Consumes(PRODUCT_SECTION_LIST)
    @Path("/productSections")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    ProductSectionList getProductSections(@EndpointParam URI templateHref);
 
-   /**
-    * Modifies the product sections of a vApp or vApp template.
-    * 
-    * <pre>
-    * PUT /vAppTemplate/{id}/productSections
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return the task performing the action. This operation is asynchronous and the user should
-    *         monitor the returned task status in order to check when it is completed.
-    */
-   @PUT
-   @Produces(PRODUCT_SECTION_LIST)
-   @Consumes(TASK)
-   @Path("/productSections")
-   @JAXBResponseParser
-   Task editProductSections(@EndpointParam(parser = URNToHref.class) String templateUrn,
-         @BinderParam(BindToXMLPayload.class) ProductSectionList sections);
-
    @PUT
    @Produces(PRODUCT_SECTION_LIST)
    @Consumes(TASK)
@@ -439,26 +163,9 @@ public interface VAppTemplateApi {
    Task editProductSections(@EndpointParam URI templateHref,
          @BinderParam(BindToXMLPayload.class) ProductSectionList sections);
 
-   /**
-    * <pre>
-    * GET /vAppTemplate/{id}/shadowVms
-    * </pre>
-    * 
-    * @param templateUrn
-    *           the String of the template
-    * @return shadowVM references
-    */
-   @GET
-   @Consumes
-   @Path("/shadowVms")
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   References getShadowVms(@EndpointParam(parser = URNToHref.class) String templateUrn);
-
    @GET
    @Consumes
    @Path("/shadowVms")
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    References getShadowVms(@EndpointParam URI templateHref);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/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 ae850e3..64eef1c 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
@@ -34,6 +34,7 @@ import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.EndpointParam;
 import org.jclouds.rest.annotations.Fallback;
@@ -53,46 +54,19 @@ 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;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface VdcApi {
 
-   /**
-    * Retrieves a vdc.
-    * 
-    * @return the vdc or null if not found
-    */
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Vdc get(@EndpointParam(parser = URNToHref.class) String vdcUrn);
-
+   /** Returns the virtual datacenter or null if not found. */
    @GET
    @Consumes
    @JAXBResponseParser
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Vdc get(@EndpointParam URI vdcHref);
    
-   /**
-    * Captures a vApp into vApp template.
-    *
-    * The status of vApp template will be in
-    * {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the
-    * capture task is finished.
-    * 
-    * @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.
-    */
-   @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);
-
+   /** Captures a vApp into vApp template. */
    @POST
    @Path("/action/captureVApp")
    @Consumes(VAPP_TEMPLATE)
@@ -100,24 +74,7 @@ public interface VdcApi {
    @JAXBResponseParser
    VAppTemplate captureVApp(@EndpointParam URI vdcHref, @BinderParam(BindToXMLPayload.class) CaptureVAppParams params);
 
-   /**
-    * Clones a media into new one.
-    *
-    * The status of the returned media is
-    * {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the task
-    * for cloning finish.
-    * 
-    * @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.
-    */
-   @POST
-   @Path("/action/cloneMedia")
-   @Consumes(MEDIA)
-   @Produces(CLONE_MEDIA_PARAMS)
-   @JAXBResponseParser
-   Media cloneMedia(@EndpointParam(parser = URNToHref.class) String vdcUrn,
-         @BinderParam(BindToXMLPayload.class) CloneMediaParams params);
-
+   /** Clones a media into new one. */
    @POST
    @Path("/action/cloneMedia")
    @Consumes(MEDIA)
@@ -125,24 +82,7 @@ public interface VdcApi {
    @JAXBResponseParser
    Media cloneMedia(@EndpointParam URI vdcHref, @BinderParam(BindToXMLPayload.class) CloneMediaParams params);
 
-   /**
-    * Clones a vApp into new one.
-    *
-    * The status of vApp will be in {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED
-    * UNRESOLVED(0)} until the clone task is finished.
-    * 
-    * @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.
-    */
-   @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);
-
+   /** Clones a vApp into new one. */
    @POST
    @Path("/action/cloneVApp")
    @Consumes(VAPP)
@@ -151,24 +91,7 @@ public interface VdcApi {
    @JAXBResponseParser
    VApp cloneVApp(@EndpointParam URI vdcHref, @BinderParam(BindToXMLPayload.class) CloneVAppParams params);
 
-   /**
-    * Clones a vApp template into new one.
-    *
-    * The status of vApp template will be in
-    * {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the clone
-    * task is finished.
-    * 
-    * @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.
-    */
-   @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);
-
+   /** Clones a vApp template into new one. */
    @POST
    @Path("/action/cloneVAppTemplate")
    @Consumes(VAPP_TEMPLATE)
@@ -180,70 +103,17 @@ public interface VdcApi {
    /**
     * Composes a new vApp using VMs from other vApps or vApp templates.
     *
-    * The vCloud API supports composing a vApp from any combination of vApp templates, vApps,
-    * or virtual machines. When you compose a vApp, all children of each composition source
-    * become peers in the Children collection of the composed vApp. To compose a vApp, a api
-    * makes a compose vApp request whose body is a ComposeVAppParams element, includes the
-    * following information:
-    * <ul>
-    * <li>An InstantiationParams element that applies to the composed vApp itself and any vApp templates referenced in
-    *    Item elements.
-    * <li>A SourcedItem element for each virtual machine, vApp, or vAppTemplate to include in the composition. Each
-    *    SourcedItem can contain the following elements:
-    *    <ul>
-    *    <li>A required Source element whose href attribute value is a reference to a vApp template, vApp, or VM to include
-    *       in the composition. If the Source element references a VM, the Item must also include an InstantiationParams
-    *       element specific to that VM.
-    *    <li>An optional NetworkAssignment element that specifies how the network connections of child VM elements are
-    *       mapped to vApp networks in the parent.
-    *    </ul>
-    * </ul>
-    * If any of the composition items is subject to a EULA, the ComposeVAppParams element must include an
-    * AllEULAsAccepted element that has a value of true, indicating that you accept the EULA. Otherwise, composition
-    * fails. The composed vApp must be deployed and powered on before it can be used. The status of vApp will be
-    * {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the
-    * compose task is finished.
-    * 
-    * @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.
+    * <p /> The composed vApp must be deployed and powered on before it can be used.
     */
    @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.
-    *
-    * The status of vApp will be in {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED
-    * UNRESOLVED(0)} until the instantiate task is finished.
-    * 
-    * <pre>
-    * POST /vdc/{id}/action/instantiateVAppTemplate
-    * </pre>
-    * 
-    * @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.
-    */
-   @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);
-
+   /** Instantiate a vApp template into a new vApp. */
    @POST
    @Path("/action/instantiateVAppTemplate")
    @Consumes(VAPP)
@@ -262,28 +132,12 @@ public interface VdcApi {
     * <li>uploading disks described from the OVF
     * <li>finishing task for uploading
     * </ol>
-    * The status of vApp template will be
-    * {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#NOT_READY NOT_READY(0)} until the ovf and
-    * all disks are uploaded to the transfer site. After this a task will run on the vApp template uploading.
-    * Note that the empty vApp template's getFiles() returns a file of size -1 after step one above,
-    * because the descriptor.ovf does not yet exist.
-    * 
-    * @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.
     */
    @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);
 
@@ -297,13 +151,5 @@ public interface VdcApi {
    @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/a58cf0c6/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 5b14541..4ae534b 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
@@ -43,6 +43,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.EndpointParam;
 import org.jclouds.rest.annotations.Fallback;
@@ -69,98 +70,36 @@ 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;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface VmApi {
 
-   /**
-    * Retrieves a {@link Vm}.
-    * 
-    * @since 0.9
-    * @see VAppApi#get(String)
-    */
-   @GET
-   @Consumes(VM)
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Vm get(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
+   /** Returns the virtual machine or null if not found. */
    @GET
    @Consumes(VM)
    @JAXBResponseParser
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Vm get(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the name/description of a {@link Vm}.
-    * 
-    * @since 0.9
-    */
-   @PUT
-   @Produces(VM)
-   @Consumes(TASK)
-   @JAXBResponseParser
-   Task edit(@EndpointParam(parser = URNToHref.class) String vmUrn,
-         @BinderParam(BindToXMLPayload.class) Vm vApp);
-
+   /** Modifies the name/description of a {@link Vm}. */
    @PUT
    @Produces(VM)
    @Consumes(TASK)
    @JAXBResponseParser
    Task edit(@EndpointParam URI vmHref, @BinderParam(BindToXMLPayload.class) Vm vApp);
 
-   /**
-    * Deletes a {@link Vm}.
-    * 
-    * @since 0.9
-    * @see VAppApi#remove(String)
-    */
-   @DELETE
-   @Consumes(TASK)
-   @JAXBResponseParser
-   Task remove(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @DELETE
    @Consumes(TASK)
    @JAXBResponseParser
    Task remove(@EndpointParam URI vmHref);
 
-   /**
-    * Consolidates a {@link Vm}.
-    * 
-    * <pre>
-    * POST /vApp/{id}/action/consolidate
-    * </pre>
-    * 
-    * @since 1.5
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#deploy(String, DeployVAppParams)
-    */
-   @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)
@@ -168,18 +107,6 @@ public interface VmApi {
    @JAXBResponseParser
    Task deploy(@EndpointParam URI vmHref, @BinderParam(BindToXMLPayload.class) DeployVAppParams params);
 
-   /**
-    * Discard suspended state of a {@link Vm}.
-    * 
-    * @since 0.9
-    * @see VAppApi#discardSuspendedState(String)
-    */
-   @POST
-   @Path("/action/discardSuspendedState")
-   @Consumes(TASK)
-   @JAXBResponseParser
-   Task discardSuspendedState(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @POST
    @Path("/action/discardSuspendedState")
    @Consumes(TASK)
@@ -189,43 +116,14 @@ public interface VmApi {
    /**
     * Installs VMware tools to the virtual machine.
     * 
-    * It should be running in order for them to be installed.
-    * 
-    * <pre>
-    * POST /vApp/{id}/action/installVMwareTools
-    * </pre>
-    * 
-    * @since 1.5
+    * <p />It should be running in order for them to be installed.
     */
    @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}.
-    * 
-    * <pre>
-    * POST /vApp/{id}/action/relocate
-    * </pre>
-    * 
-    * @since 1.5
-    */
-   @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)
@@ -233,20 +131,6 @@ public interface VmApi {
    @JAXBResponseParser
    Task relocate(@EndpointParam URI vmHref, @BinderParam(BindToXMLPayload.class) RelocateParams params);
 
-   /**
-    * Undeploy a {@link Vm}.
-    * 
-    * @since 0.9
-    * @see VAppApi#undeploy(String, UndeployVAppParams)
-    */
-   @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)
@@ -258,173 +142,55 @@ public interface VmApi {
    /**
     * Upgrade virtual hardware version of a VM to the highest supported virtual hardware version of
     * provider vDC where the VM locates.
-    * 
-    * <pre>
-    * POST /vApp/{id}/action/upgradeHardwareVersion
-    * </pre>
-    * 
-    * @since 1.5
     */
    @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#powerOff(String)
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#powerOn(String)
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#reboot(String)
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#reset(String)
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#shutdown(String)
-    */
-   @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}.
-    * 
-    * @since 0.9
-    * @see VAppApi#suspend(String)
-    */
-   @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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/guestCustomizationSection
-    * </pre>
-    * 
-    * @since 1.0
-    */
    @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}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/guestCustomizationSection
-    * </pre>
-    * 
-    * @since 1.0
-    */
-   @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)
@@ -433,23 +199,6 @@ public interface VmApi {
    Task editGuestCustomizationSection(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) GuestCustomizationSection section);
 
-   /**
-    * Ejects media from a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/media/action/ejectMedia
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -458,23 +207,6 @@ public interface VmApi {
    Task ejectMedia(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams mediaParams);
 
-   /**
-    * Insert media into a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/media/action/insertMedia
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -483,46 +215,12 @@ public interface VmApi {
    Task insertMedia(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) MediaInsertOrEjectParams mediaParams);
 
-   /**
-    * Retrieves the network connection section of a {@link Vm}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/networkConnectionSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
    @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}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/networkConnectionSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -531,46 +229,12 @@ public interface VmApi {
    Task editNetworkConnectionSection(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) NetworkConnectionSection section);
 
-   /**
-    * Retrieves the operating system section of a {@link Vm}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/operatingSystemSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/operatingSystemSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -579,19 +243,6 @@ public interface VmApi {
    Task editOperatingSystemSection(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) OperatingSystemSection section);
 
-   /**
-    * Retrieves {@link Vm} product sections.
-    * 
-    * @since 1.5
-    * @see VAppApi#getProductSections(String)
-    */
-   @GET
-   @Path("/productSections")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ProductSectionList getProductSections(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/productSections")
    @Consumes
@@ -599,20 +250,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    ProductSectionList getProductSections(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the product section information of a {@link Vm}.
-    * 
-    * @since 1.5
-    * @see VAppApi#editProductSections(String, ProductSectionList)
-    */
-   @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)
@@ -624,151 +261,48 @@ public interface VmApi {
    /**
     * Retrieves a pending question for a {@link Vm}.
     * 
-    * The user should answer to the question by operation
-    * {@link #answerQuestion(String, VmQuestionAnswer)}. Usually questions will be asked when the VM
+    * <p/> The user should answer to the question by operation
+    * {@link #answerQuestion(URI, VmQuestionAnswer)}. Usually questions will be asked when the VM
     * is powering on.
-    * 
-    * <pre>
-    * GET /vApp/{id}/question
-    * </pre>
-    * 
-    * @since 0.9
     */
    @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}.
     * 
     * The answer IDs of choice and question should match the ones returned from operation
-    * {@link #getPendingQuestion(String)}.
-    * 
-    * <pre>
-    * POST /vApp/{id}/question/action/answer
-    * </pre>
-    * 
-    * @since 0.9
+    * {@link #getPendingQuestion(URI)}.
     */
    @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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/runtimeInfoSection
-    * </pre>
-    * 
-    * @since 1.5
-    */
    @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}.
-    * 
-    * The content type of the response may vary (e.g. {@code image/png}, {@code image/gif}).
-    * 
-    * <pre>
-    * GET /vApp/{id}/screen
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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}.
-    * 
-    * A screen ticket is a string that includes the virtual machine's IP address, its managed object
-    * reference, and a string that has been encoded as described in RFC 2396. Each VM element in a
-    * vApp includes a link where rel="screen:acquireTicket". You can use that link to request a
-    * screen ticket that you can use with the vmware-vmrc utility to open a VMware Remote Console
-    * for the virtual machine represented by that VM element. The vApp should be running to get a
-    * valid screen ticket.
-    * 
-    * <pre>
-    * GET /vApp/{id}/screen/action/acquireTicket
-    * </pre>
-    * 
-    * @since 0.9
-    */
    @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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @GET
-   @Path("/virtualHardwareSection")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   VirtualHardwareSection getVirtualHardwareSection(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/virtualHardwareSection")
    @Consumes
@@ -776,23 +310,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    VirtualHardwareSection getVirtualHardwareSection(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -801,22 +318,6 @@ public interface VmApi {
    Task editVirtualHardwareSection(@EndpointParam URI vmHref,
          @BinderParam(BindToXMLPayload.class) VirtualHardwareSection section);
 
-   /**
-    * Retrieves the CPU properties in virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/cpu
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @GET
-   @Path("/virtualHardwareSection/cpu")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   RasdItem getVirtualHardwareSectionCpu(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/virtualHardwareSection/cpu")
    @Consumes
@@ -824,23 +325,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    RasdItem getVirtualHardwareSectionCpu(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the CPU properties in virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection/cpu
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -849,22 +333,6 @@ public interface VmApi {
    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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/disks
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @GET
-   @Path("/virtualHardwareSection/disks")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   RasdItemsList getVirtualHardwareSectionDisks(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/virtualHardwareSection/disks")
    @Consumes
@@ -872,23 +340,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    RasdItemsList getVirtualHardwareSectionDisks(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the disks list in virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection/disks
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -899,44 +350,14 @@ public interface VmApi {
 
    /**
     * Retrieves the list of items that represents the floppies and CD/DVD drives in a {@link Vm}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/media
-    * </pre>
-    * 
-    * @since 0.9
     */
    @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
-    * {@link Vm}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/memory
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @GET
-   @Path("/virtualHardwareSection/memory")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   RasdItem getVirtualHardwareSectionMemory(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/virtualHardwareSection/memory")
    @Consumes
@@ -944,23 +365,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    RasdItem getVirtualHardwareSectionMemory(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the memory properties in virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection/memory
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -969,46 +373,12 @@ public interface VmApi {
    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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/networkCards
-    * </pre>
-    * 
-    * @since 0.9
-    */
    @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}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection/networkCards
-    * </pre>
-    * 
-    * @since 0.9
-    */
-   @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)
@@ -1017,22 +387,6 @@ public interface VmApi {
    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}.
-    * 
-    * <pre>
-    * GET /vApp/{id}/virtualHardwareSection/serialPorts
-    * </pre>
-    * 
-    * @since 1.5
-    */
-   @GET
-   @Path("/virtualHardwareSection/serialPorts")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   RasdItemsList getVirtualHardwareSectionSerialPorts(@EndpointParam(parser = URNToHref.class) String vmUrn);
-
    @GET
    @Path("/virtualHardwareSection/serialPorts")
    @Consumes
@@ -1040,23 +394,6 @@ public interface VmApi {
    @Fallback(NullOnNotFoundOr404.class)
    RasdItemsList getVirtualHardwareSectionSerialPorts(@EndpointParam URI vmHref);
 
-   /**
-    * Modifies the serial ports list in virtual hardware section of a {@link Vm}.
-    * 
-    * <pre>
-    * PUT /vApp/{id}/virtualHardwareSection/serialPorts
-    * </pre>
-    * 
-    * @since 1.5
-    */
-   @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)

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminCatalogApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminCatalogApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminCatalogApi.java
index 275a5b0..567cfcb 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminCatalogApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminCatalogApi.java
@@ -19,6 +19,7 @@ package org.jclouds.vcloud.director.v1_5.features.admin;
 import static org.jclouds.Fallbacks.NullOnNotFoundOr404;
 import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.ADMIN_CATALOG;
 import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.CONTROL_ACCESS;
+import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.OWNER;
 import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.PUBLISH_CATALOG_PARAMS;
 
 import java.net.URI;
@@ -31,43 +32,34 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
+import org.jclouds.javax.annotation.Nullable;
 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.AdminCatalog;
 import org.jclouds.vcloud.director.v1_5.domain.Owner;
 import org.jclouds.vcloud.director.v1_5.domain.params.ControlAccessParams;
 import org.jclouds.vcloud.director.v1_5.domain.params.PublishCatalogParams;
 import org.jclouds.vcloud.director.v1_5.features.CatalogApi;
 import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface AdminCatalogApi extends CatalogApi {
 
-   /**
-    * Creates a catalog in an organization. The catalog will always be addd in unpublished state.
-    * 
-    * <pre>
-    * POST /admin/org/{id}/catalogs
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the urn for the org
-    * @return contains a , which will point to the running asynchronous creation operation.
-    */
-   @POST
-   @Path("/catalogs")
-   @Consumes(ADMIN_CATALOG)
-   @Produces(ADMIN_CATALOG)
+   @Override
+   @GET
+   @Consumes
    @JAXBResponseParser
-   AdminCatalog addCatalogToOrg(@BinderParam(BindToXMLPayload.class) AdminCatalog catalog,
-         @EndpointParam(parser = URNToAdminHref.class) String orgUrn);
+   @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
+   AdminCatalog get(@EndpointParam URI orgHref);
 
+   /**
+    * Creates a catalog in an organization. The catalog will always be added in unpublished state.
+    */
    @POST
    @Path("/catalogs")
    @Consumes(ADMIN_CATALOG)
@@ -77,117 +69,37 @@ public interface AdminCatalogApi extends CatalogApi {
          @EndpointParam URI orgHref);
 
    /**
-    * Retrieves a catalog.
-    * 
-    * <pre>
-    * GET /admin/catalog/{id}
-    * </pre>
-    * 
-    * @param catalogUrn
-    *           the urn for the catalog
-    * @return a catalog
-    */
-   @Override
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   AdminCatalog get(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn);
-   
-   @Override
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   AdminCatalog get(@EndpointParam URI orgHref);
-
-   /**
     * Modifies a catalog. A catalog could be published or unpublished. The IsPublished property is
     * treated as a read only value by the server. In order to control publishing settings use the
     * 'publish' action must be used.
-    * 
-    * <pre>
-    * PUT /admin/catalog/{id}
-    * </pre>
-    * 
-    * @return the edited catalog
     */
    @PUT
    @Consumes(ADMIN_CATALOG)
    @Produces(ADMIN_CATALOG)
    @JAXBResponseParser
-   AdminCatalog edit(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn,
-         @BinderParam(BindToXMLPayload.class) AdminCatalog catalog);
-
-   @PUT
-   @Consumes(ADMIN_CATALOG)
-   @Produces(ADMIN_CATALOG)
-   @JAXBResponseParser
    AdminCatalog edit(@EndpointParam URI catalogAdminHref,
          @BinderParam(BindToXMLPayload.class) AdminCatalog catalog);
 
    /**
     * Deletes a catalog. The catalog could be removed if it is either published or unpublished.
-    * 
-    * <pre>
-    * DELETE /admin/catalog/{id}
-    * </pre>
     */
    @DELETE
    @Consumes
    @JAXBResponseParser
-   void remove(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn);
-
-   @DELETE
-   @Consumes
-   @JAXBResponseParser
    void remove(@EndpointParam URI catalogAdminHref);
 
-   /**
-    * Retrieves the owner of a catalog.
-    * 
-    * <pre>
-    * GET /admin/catalog/{id}/owner
-    * </pre>
-    * 
-    * @return the owner or null if not found
-    */
-   @GET
-   @Path("/owner")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Owner getOwner(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn);
-
    @GET
    @Path("/owner")
    @Consumes
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    Owner getOwner(@EndpointParam URI catalogAdminHref);
 
-   /**
-    * Changes owner for catalog.
-    * 
-    * <pre>
-    * PUT /admin/catalog/{id}/owner
-    * </pre>
-    */
-   @PUT
-   @Path("/owner")
-   @Consumes
-   @Produces(VCloudDirectorMediaType.OWNER)
-   @JAXBResponseParser
-   void setOwner(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn,
-         @BinderParam(BindToXMLPayload.class) Owner newOwner);
-
    @PUT
    @Path("/owner")
    @Consumes
-   @Produces(VCloudDirectorMediaType.OWNER)
+   @Produces(OWNER)
    @JAXBResponseParser
-   void setOwner(@EndpointParam URI catalogAdminHref,
-         @BinderParam(BindToXMLPayload.class) Owner newOwner);
+   void setOwner(@EndpointParam URI catalogAdminHref, @BinderParam(BindToXMLPayload.class) Owner newOwner);
    
    /**
     * Publish a catalog. Publishing a catalog makes the catalog visible to all organizations in a
@@ -198,33 +110,8 @@ public interface AdminCatalogApi extends CatalogApi {
    @Consumes
    @Produces(PUBLISH_CATALOG_PARAMS)
    @JAXBResponseParser
-   void publish(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn,
-         @BinderParam(BindToXMLPayload.class) PublishCatalogParams params);
-
-   @POST
-   @Path("/action/publish")
-   @Consumes
-   @Produces(PUBLISH_CATALOG_PARAMS)
-   @JAXBResponseParser
    void publish(@EndpointParam URI catalogAdminHref, @BinderParam(BindToXMLPayload.class) PublishCatalogParams params);
 
-   /**
-    * Modifies a catalog control access.
-    *
-    * <pre>
-    * POST /org/{id}/catalog/{catalogId}/action/controlAccess
-    * </pre>
-    *
-    * @return the control access information
-    */
-   @POST
-   @Path("/action/controlAccess")
-   @Produces(CONTROL_ACCESS)
-   @Consumes(CONTROL_ACCESS)
-   @JAXBResponseParser
-   ControlAccessParams editAccessControl(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn,
-         @BinderParam(BindToXMLPayload.class) ControlAccessParams params);
-
    @POST
    @Path("/action/controlAccess")
    @Produces(CONTROL_ACCESS)
@@ -233,26 +120,9 @@ public interface AdminCatalogApi extends CatalogApi {
    ControlAccessParams editAccessControl(@EndpointParam URI catalogAdminHref,
          @BinderParam(BindToXMLPayload.class) ControlAccessParams params);
 
-   /**
-    * Retrieves the catalog control access information.
-    *
-    * <pre>
-    * GET /org/{id}/catalog/{catalogId}/controlAccess
-    * </pre>
-    *
-    * @return the control access information
-    */
    @GET
    @Path("/controlAccess")
    @Consumes
    @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   ControlAccessParams getAccessControl(@EndpointParam(parser = URNToAdminHref.class) String catalogUrn);
-
-   @GET
-   @Path("/controlAccess")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    ControlAccessParams getAccessControl(@EndpointParam URI catalogAdminHref);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminNetworkApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminNetworkApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminNetworkApi.java
index 67b9024..7e50534 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminNetworkApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminNetworkApi.java
@@ -40,88 +40,37 @@ import org.jclouds.vcloud.director.v1_5.domain.network.Network;
 import org.jclouds.vcloud.director.v1_5.domain.org.OrgNetwork;
 import org.jclouds.vcloud.director.v1_5.features.NetworkApi;
 import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface AdminNetworkApi extends NetworkApi {
 
    /**
-    * Gets admin representation of network. This operation could return admin representation of
+    * Gets admin representation of the network or null if not found.
+    *
+    * <p />This operation could return admin representation of
     * organization network or external network. vApp networks do not have admin representation.
-    * 
-    * <pre>
-    * GET /admin/network/{id}
-    * </pre>
-    * 
-    * @param networkUrn
-    *           the reference for the network
-    * @return the network
     */
    @Override
    @GET
    @Consumes
    @JAXBResponseParser
    @Fallback(NullOnNotFoundOr404.class)
-   Network get(@EndpointParam(parser = URNToAdminHref.class) String networkUrn);
-
-   @Override
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
    Network get(@EndpointParam URI networkAdminHref);
 
-   /**
-    * Modifies an org network
-    * 
-    * <pre>
-    * PUT /admin/network/{id}
-    * </pre>
-    * 
-    * @param networkUrn
-    *           the reference for the network
-    * @param network
-    *           the edited network
-    * @return a task. This operation is asynchronous and the user should monitor the returned task
-    *         status in order to check when it is completed.
-    */
-   @PUT
-   @Consumes(TASK)
-   @Produces(ADMIN_ORG_NETWORK)
-   @JAXBResponseParser
-   Task edit(@EndpointParam(parser = URNToAdminHref.class) String networkUrn,
-         @BinderParam(BindToXMLPayload.class) OrgNetwork network);
-
    @PUT
    @Consumes(TASK)
    @Produces(ADMIN_ORG_NETWORK)
    @JAXBResponseParser
-   Task edit(@EndpointParam URI networkAdminHref,
-         @BinderParam(BindToXMLPayload.class) OrgNetwork network);
+   Task edit(@EndpointParam URI networkAdminHref, @BinderParam(BindToXMLPayload.class) OrgNetwork network);
 
    /**
     * Reset(undeploy & redeploy) networking services on a logical network. The reset operation can
     * be performed on: - external networks - organization networks - vApp networks The reset
     * operation can be performed only on deployed networks.
-    * 
-    * <pre>
-    * POST /admin/network/{id}/action/reset
-    * </pre>
-    * 
-    * @param networkUrn
-    *           the reference for the network
-    * @return a task. This operation is asynchronous and the user should monitor the returned task
-    *         status in order to check when it is completed.
     */
    @POST
    @Path("/action/reset")
    @Consumes
    @JAXBResponseParser
-   Task reset(@EndpointParam(parser = URNToAdminHref.class) String networkUrn);
-
-   @POST
-   @Path("/action/reset")
-   @Consumes
-   @JAXBResponseParser
    Task reset(@EndpointParam URI networkAdminHref);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminOrgApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminOrgApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminOrgApi.java
index f8831f4..555c46c 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminOrgApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminOrgApi.java
@@ -48,30 +48,11 @@ import org.jclouds.vcloud.director.v1_5.domain.org.OrgSettings;
 import org.jclouds.vcloud.director.v1_5.domain.org.OrgVAppTemplateLeaseSettings;
 import org.jclouds.vcloud.director.v1_5.features.OrgApi;
 import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface AdminOrgApi extends OrgApi {
 
-   /**
-    * Retrieves an admin view of an organization. The organization might be enabled or disabled. If
-    * enabled, the organization allows login and all other operations.
-    * 
-    * <pre>
-    * GET /admin/org/{id}
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the admin org
-    */
-   @Override
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   AdminOrg get(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
+   /** Retrieves an admin view of an organization or null if not found. */
    @Override
    @GET
    @Consumes
@@ -79,24 +60,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    AdminOrg get(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Gets organizational settings for this organization.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the settings
-    */
-   @GET
-   @Path("/settings")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgSettings getSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings")
    @Consumes
@@ -104,27 +67,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgSettings getSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates organizational settings for this organization.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings")
-   @Consumes(ORG_SETTINGS)
-   @Produces(ORG_SETTINGS)
-   @JAXBResponseParser
-   OrgSettings editSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgSettings settings);
-
    @PUT
    @Path("/settings")
    @Consumes(ORG_SETTINGS)
@@ -133,24 +75,6 @@ public interface AdminOrgApi extends OrgApi {
    OrgSettings editSettings(@EndpointParam URI adminOrgHref,
          @BinderParam(BindToXMLPayload.class) OrgSettings settings);
 
-   /**
-    * Retrieves email settings for an organization.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/email
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the email settings
-    */
-   @GET
-   @Path("/settings/email")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgEmailSettings getEmailSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/email")
    @Consumes
@@ -158,27 +82,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgEmailSettings getEmailSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates email policy settings for organization.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings/email
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings/email")
-   @Consumes(ORG_EMAIL_SETTINGS)
-   @Produces(ORG_EMAIL_SETTINGS)
-   @JAXBResponseParser
-   OrgEmailSettings editEmailSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgEmailSettings settings);
-
    @PUT
    @Path("/settings/email")
    @Consumes(ORG_EMAIL_SETTINGS)
@@ -187,24 +90,6 @@ public interface AdminOrgApi extends OrgApi {
    OrgEmailSettings editEmailSettings(@EndpointParam URI adminOrgHref,
          @BinderParam(BindToXMLPayload.class) OrgEmailSettings settings);
 
-   /**
-    * Gets general organization settings.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/general
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the lease settings
-    */
-   @GET
-   @Path("/settings/general")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgGeneralSettings getGeneralSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/general")
    @Consumes
@@ -212,27 +97,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgGeneralSettings getGeneralSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates general organization settings.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings/general
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings/general")
-   @Consumes(ORG_GENERAL_SETTINGS)
-   @Produces(ORG_GENERAL_SETTINGS)
-   @JAXBResponseParser
-   OrgGeneralSettings editGeneralSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgGeneralSettings settings);
-
    @PUT
    @Path("/settings/general")
    @Consumes(ORG_GENERAL_SETTINGS)
@@ -241,24 +105,6 @@ public interface AdminOrgApi extends OrgApi {
    OrgGeneralSettings editGeneralSettings(@EndpointParam URI adminOrgHref,
          @BinderParam(BindToXMLPayload.class) OrgGeneralSettings settings);
 
-   /**
-    * Retrieves LDAP settings for an organization.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/ldap
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the ldap settings
-    */
-   @GET
-   @Path("/settings/ldap")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgLdapSettings getLdapSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/ldap")
    @Consumes
@@ -266,25 +112,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgLdapSettings getLdapSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Retrieves password policy settings for an organization.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/passwordPolicy
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the lease settings
-    */
-   @GET
-   @Path("/settings/passwordPolicy")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgPasswordPolicySettings getPasswordPolicy(
-         @EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/passwordPolicy")
    @Consumes
@@ -292,27 +119,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgPasswordPolicySettings getPasswordPolicy(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates password policy settings for organization.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings/passwordPolicy
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings/passwordPolicy")
-   @Consumes(ORG_PASSWORD_POLICY_SETTINGS)
-   @Produces(ORG_PASSWORD_POLICY_SETTINGS)
-   @JAXBResponseParser
-   OrgPasswordPolicySettings editPasswordPolicy(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgPasswordPolicySettings settings);
-
    @PUT
    @Path("/settings/passwordPolicy")
    @Consumes(ORG_PASSWORD_POLICY_SETTINGS)
@@ -321,24 +127,6 @@ public interface AdminOrgApi extends OrgApi {
    OrgPasswordPolicySettings editPasswordPolicy(@EndpointParam URI adminOrgHref,
          @BinderParam(BindToXMLPayload.class) OrgPasswordPolicySettings settings);
 
-   /**
-    * Gets organization resource cleanup settings on the level of vApp.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/vAppLeaseSettings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the lease settings
-    */
-   @GET
-   @Path("/settings/vAppLeaseSettings")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgLeaseSettings getVAppLeaseSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/vAppLeaseSettings")
    @Consumes
@@ -346,27 +134,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgLeaseSettings getVAppLeaseSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates organization resource cleanup settings on the level of vApp.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings/vAppLeaseSettings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings/vAppLeaseSettings")
-   @Consumes(ORG_LEASE_SETTINGS)
-   @Produces(ORG_LEASE_SETTINGS)
-   @JAXBResponseParser
-   OrgLeaseSettings editVAppLeaseSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgLeaseSettings settings);
-
    @PUT
    @Path("/settings/vAppLeaseSettings")
    @Consumes(ORG_LEASE_SETTINGS)
@@ -375,24 +142,6 @@ public interface AdminOrgApi extends OrgApi {
    OrgLeaseSettings editVAppLeaseSettings(@EndpointParam URI adminOrgHref,
          @BinderParam(BindToXMLPayload.class) OrgLeaseSettings settings);
 
-   /**
-    * Retrieves expiration and storage policy for vApp templates in an organization.
-    * 
-    * <pre>
-    * GET /admin/org/{id}/settings/vAppTemplateLeaseSettings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @return the lease settings
-    */
-   @GET
-   @Path("/settings/vAppTemplateLeaseSettings")
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   OrgVAppTemplateLeaseSettings getVAppTemplateLeaseSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn);
-
    @GET
    @Path("/settings/vAppTemplateLeaseSettings")
    @Consumes
@@ -400,27 +149,6 @@ public interface AdminOrgApi extends OrgApi {
    @Fallback(NullOnNotFoundOr404.class)
    OrgVAppTemplateLeaseSettings getVAppTemplateLeaseSettings(@EndpointParam URI adminOrgHref);
 
-   /**
-    * Updates vApp template policy settings for organization.
-    * 
-    * <pre>
-    * PUT /admin/org/{id}/settings/vAppTemplateLeaseSettings
-    * </pre>
-    * 
-    * @param orgUrn
-    *           the reference for the admin org
-    * @param settings
-    *           the requested edited settings
-    * @return the resultant settings
-    */
-   @PUT
-   @Path("/settings/vAppTemplateLeaseSettings")
-   @Consumes(ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
-   @Produces(ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
-   @JAXBResponseParser
-   OrgVAppTemplateLeaseSettings editVAppTemplateLeaseSettings(@EndpointParam(parser = URNToAdminHref.class) String orgUrn,
-         @BinderParam(BindToXMLPayload.class) OrgVAppTemplateLeaseSettings settings);
-
    @PUT
    @Path("/settings/vAppTemplateLeaseSettings")
    @Consumes(ORG_VAPP_TEMPLATE_LEASE_SETTINGS)

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java
index ae18e8f..dcd6fba 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/AdminVdcApi.java
@@ -37,27 +37,11 @@ import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
 import org.jclouds.vcloud.director.v1_5.domain.Task;
 import org.jclouds.vcloud.director.v1_5.features.VdcApi;
 import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface AdminVdcApi extends VdcApi {
 
-   /**
-    * Retrieves an admin view of virtual data center. The redwood admin can disable an 
-    * organization vDC. This will prevent any further allocation to be used by the organization. 
-    * Changing the state will not affect allocations already used. For example, if an organization 
-    * vDC is disabled, an organization user cannot deploy or add a new virtual machine in the 
-    * vDC (deploy uses memory and cpu allocations, and add uses storage allocation).
-    * 
-    * @return the admin vDC or null if not found
-    */
-   @Override
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   AdminVdc get(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn);
-
+   /** Returns an admin view of the virtual datacenter or null if not found. */
    @Override
    @GET
    @Consumes
@@ -74,12 +58,6 @@ public interface AdminVdcApi extends VdcApi {
    @Consumes
    @Produces(VCloudDirectorMediaType.ADMIN_VDC)
    @JAXBResponseParser
-   Task edit(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn, AdminVdc vdc);
-
-   @PUT
-   @Consumes
-   @Produces(VCloudDirectorMediaType.ADMIN_VDC)
-   @JAXBResponseParser
    Task edit(@EndpointParam URI vdcAdminHref, AdminVdc vdc);
 
    /**
@@ -90,11 +68,6 @@ public interface AdminVdcApi extends VdcApi {
    @DELETE
    @Consumes
    @JAXBResponseParser
-   Task remove(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn);
-
-   @DELETE
-   @Consumes
-   @JAXBResponseParser
    Task remove(@EndpointParam URI vdcAdminHref);
 
    /**
@@ -105,12 +78,6 @@ public interface AdminVdcApi extends VdcApi {
    @Consumes
    @Path("/action/enable")
    @JAXBResponseParser
-   void enable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn);
-
-   @POST
-   @Consumes
-   @Path("/action/enable")
-   @JAXBResponseParser
    void enable(@EndpointParam URI vdcAdminHref);
 
    /**
@@ -121,11 +88,5 @@ public interface AdminVdcApi extends VdcApi {
    @Consumes
    @Path("/action/disable")
    @JAXBResponseParser
-   void disable(@EndpointParam(parser = URNToAdminHref.class) String vdcUrn);
-
-   @POST
-   @Consumes
-   @Path("/action/disable")
-   @JAXBResponseParser
    void disable(@EndpointParam URI vdcAdminHref);
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/a58cf0c6/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java
----------------------------------------------------------------------
diff --git a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java
index 892ff08..77fdae5 100644
--- a/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java
+++ b/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/admin/GroupApi.java
@@ -29,6 +29,7 @@ import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.rest.annotations.BinderParam;
 import org.jclouds.rest.annotations.EndpointParam;
 import org.jclouds.rest.annotations.Fallback;
@@ -37,74 +38,23 @@ import org.jclouds.rest.annotations.RequestFilters;
 import org.jclouds.rest.binders.BindToXMLPayload;
 import org.jclouds.vcloud.director.v1_5.domain.Group;
 import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationAndCookieToRequest;
-import org.jclouds.vcloud.director.v1_5.functions.URNToAdminHref;
-import org.jclouds.vcloud.director.v1_5.functions.URNToHref;
 
 @RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class)
 public interface GroupApi {
-   
-   /**
-    * Imports a group in an organization.
-    *
-    * <pre>
-    * POST /admin/org/{id}/groups
-    * </pre>
-    *
-    * @param adminUrn the admin org to add the group in
-    * @return the added group
-    */
-   @POST
-   @Path("/groups")
-   @Consumes(GROUP)
-   @Produces(GROUP)
-   @JAXBResponseParser
-   Group addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group,
-         @EndpointParam(parser = URNToAdminHref.class) String adminUrn);
-
-   @POST
-   @Path("/groups")
-   @Consumes(GROUP)
-   @Produces(GROUP)
-   @JAXBResponseParser
-   Group addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, @EndpointParam URI adminUrn);
-
-   /**
-    * Retrieves a group.
-    *
-    * <pre>
-    * GET /admin/group/{id}
-    * </pre>
-    *
-    * @param groupUrn the reference for the group
-    * @return a group
-    */
-   @GET
-   @Consumes
-   @JAXBResponseParser
-   @Fallback(NullOnNotFoundOr404.class)
-   Group get(@EndpointParam(parser = URNToHref.class) String groupUrn);
-
+   /** Returns the group or null if not found. */
    @GET
    @Consumes
    @JAXBResponseParser
    @Fallback(NullOnNotFoundOr404.class)
+   @Nullable
    Group get(@EndpointParam URI groupUri);
 
-   /**
-    * Modifies a group.
-    * 
-    * <pre>
-    * PUT /admin/group/{id}
-    * </pre>
-    * 
-    * @return the edited group
-    */
-   @PUT
+   @POST
+   @Path("/groups")
    @Consumes(GROUP)
    @Produces(GROUP)
    @JAXBResponseParser
-   Group edit(@EndpointParam(parser = URNToHref.class) String groupUrn,
-         @BinderParam(BindToXMLPayload.class) Group group);
+   Group addGroupToOrg(@BinderParam(BindToXMLPayload.class) Group group, @EndpointParam URI adminUrn);
 
    @PUT
    @Consumes(GROUP)
@@ -112,18 +62,6 @@ public interface GroupApi {
    @JAXBResponseParser
    Group edit(@EndpointParam URI groupUrn, @BinderParam(BindToXMLPayload.class) Group group);
 
-   /**
-    * Deletes a group.
-    * 
-    * <pre>
-    * DELETE /admin/group/{id}
-    * </pre>
-    */
-   @DELETE
-   @Consumes
-   @JAXBResponseParser
-   void remove(@EndpointParam(parser = URNToHref.class) String groupUrn);
-
    @DELETE
    @Consumes
    @JAXBResponseParser