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/11/17 17:19:34 UTC

[18/19] jclouds git commit: JCLOUDS-780 Remove vcloud.

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindGuestCustomizationSectionToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindGuestCustomizationSectionToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindGuestCustomizationSectionToXmlPayload.java
deleted file mode 100644
index 3ba51d1..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindGuestCustomizationSectionToXmlPayload.java
+++ /dev/null
@@ -1,107 +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.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA;
-
-import java.util.Properties;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.logging.Logger;
-import org.jclouds.rest.binders.BindToStringPayload;
-import org.jclouds.vcloud.domain.GuestCustomizationSection;
-
-import com.google.common.base.Throwables;
-import com.google.inject.Inject;
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindGuestCustomizationSectionToXmlPayload extends BindToStringPayload {
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   protected final String ns;
-   protected final String schema;
-
-   @Inject
-   public BindGuestCustomizationSectionToXmlPayload(BindToStringPayload stringBinder,
-            @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) {
-      this.ns = ns;
-      this.schema = schema;
-   }
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
-      checkArgument(checkNotNull(payload, "GuestCustomizationSection") instanceof GuestCustomizationSection,
-               "this binder is only valid for GuestCustomizationSection!");
-      GuestCustomizationSection guest = GuestCustomizationSection.class.cast(payload);
-      XMLBuilder guestCustomizationSection;
-      try {
-         guestCustomizationSection = XMLBuilder.create("GuestCustomizationSection").a("xmlns", ns).a("xmlns:ovf",
-                  "http://schemas.dmtf.org/ovf/envelope/1").a("type", guest.getType()).a("href",
-                  guest.getHref().toASCIIString()).a("ovf:required", "false");
-         guestCustomizationSection.e("ovf:Info").t(guest.getInfo());
-
-         if (guest.isEnabled() != null)
-            guestCustomizationSection.e("Enabled").t(guest.isEnabled().toString());
-         if (guest.shouldChangeSid() != null)
-            guestCustomizationSection.e("ChangeSid").t(guest.shouldChangeSid().toString());
-         if (guest.getVirtualMachineId() != null)
-            guestCustomizationSection.e("VirtualMachineId").t(guest.getVirtualMachineId().toString());
-         if (guest.isJoinDomainEnabled() != null)
-            guestCustomizationSection.e("JoinDomainEnabled").t(guest.isJoinDomainEnabled().toString());
-         if (guest.shouldUseOrgSettings() != null)
-            guestCustomizationSection.e("UseOrgSettings").t(guest.shouldUseOrgSettings().toString());
-         if (guest.getDomainName() != null)
-            guestCustomizationSection.e("DomainName").t(guest.getDomainName().toString());
-         if (guest.getDomainUserName() != null)
-            guestCustomizationSection.e("DomainUserName").t(guest.getDomainUserName().toString());
-         if (guest.getDomainUserPassword() != null)
-            guestCustomizationSection.e("DomainUserPassword").t(guest.getDomainUserPassword().toString());
-         if (guest.isAdminPasswordEnabled() != null)
-            guestCustomizationSection.e("AdminPasswordEnabled").t(guest.isAdminPasswordEnabled().toString());
-         if (guest.isAdminPasswordAuto() != null)
-            guestCustomizationSection.e("AdminPasswordAuto").t(guest.isAdminPasswordAuto().toString());
-         // if (guest.getAdminPassword() != null)
-         // guestCustomizationSection.e("AdminPassword").t(guest.getAdminPassword().toString());
-         if (guest.isResetPasswordRequired() != null)
-            guestCustomizationSection.e("ResetPasswordRequired").t(guest.isResetPasswordRequired().toString());
-         if (guest.getCustomizationScript() != null)
-            guestCustomizationSection.e("CustomizationScript").t(guest.getCustomizationScript());
-         if (guest.getComputerName() != null)
-            guestCustomizationSection.e("ComputerName").t(guest.getComputerName().toString());
-         if (guest.getEdit() != null)
-            guestCustomizationSection.e("Link").a("rel", "edit").a("type", guest.getType()).a("href",
-                     guest.getHref().toASCIIString());
-
-         Properties outputProperties = new Properties();
-         outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
-         request =  super.bindToRequest(request, guestCustomizationSection.asString(outputProperties));
-         request.getPayload().getContentMetadata().setContentType(guest.getType());
-      } catch (Exception e) {
-         Throwables.propagate(e);
-      }
-      return request;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindInstantiateVAppTemplateParamsToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindInstantiateVAppTemplateParamsToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindInstantiateVAppTemplateParamsToXmlPayload.java
deleted file mode 100644
index 5576ca0..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindInstantiateVAppTemplateParamsToXmlPayload.java
+++ /dev/null
@@ -1,216 +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.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.transform;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.javax.annotation.Nullable;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToStringPayload;
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.domain.VAppTemplate;
-import org.jclouds.vcloud.domain.Vm;
-import org.jclouds.vcloud.domain.network.FenceMode;
-import org.jclouds.vcloud.domain.network.NetworkConfig;
-import org.jclouds.vcloud.endpoints.Network;
-import org.jclouds.vcloud.options.InstantiateVAppTemplateOptions;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindInstantiateVAppTemplateParamsToXmlPayload implements MapBinder {
-
-   protected final String ns;
-   protected final String schema;
-   protected final BindToStringPayload stringBinder;
-   protected final Supplier<ReferenceType> defaultNetwork;
-   protected final FenceMode defaultFenceMode;
-   protected final LoadingCache<URI, VAppTemplate> templateCache;
-   protected final Function<VAppTemplate, String> defaultNetworkNameInTemplate;
-
-   @Inject
-   public BindInstantiateVAppTemplateParamsToXmlPayload(LoadingCache<URI, VAppTemplate> templateCache,
-            @Network Function<VAppTemplate, String> defaultNetworkNameInTemplate, BindToStringPayload stringBinder,
-            @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema,
-            @Network Supplier<ReferenceType> network, FenceMode fenceMode) {
-      this.templateCache = templateCache;
-      this.defaultNetworkNameInTemplate = defaultNetworkNameInTemplate;
-      this.ns = ns;
-      this.schema = schema;
-      this.stringBinder = stringBinder;
-      this.defaultNetwork = network;
-      this.defaultFenceMode = fenceMode;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      checkArgument(checkNotNull(request, "request") instanceof GeneratedHttpRequest,
-            "this binder is only valid for GeneratedHttpRequests!");
-      GeneratedHttpRequest gRequest = (GeneratedHttpRequest) request;
-      String name = checkNotNull(postParams.remove("name"), "name").toString();
-      URI template = URI.create(checkNotNull(postParams.remove("template"), "template").toString());
-
-      Set<NetworkConfig> networkConfig = null;
-
-      NetworkConfigDecorator networkConfigDecorator = new NetworkConfigDecorator(templateCache.getUnchecked(template),
-            defaultNetwork.get().getHref(), defaultFenceMode, defaultNetworkNameInTemplate);
-
-      InstantiateVAppTemplateOptions options = findOptionsInArgsOrNull(gRequest);
-
-      if (options != null) {
-         if (!options.getNetworkConfig().isEmpty())
-            networkConfig = ImmutableSet
-                     .copyOf(transform(options.getNetworkConfig(), networkConfigDecorator));
-      } else {
-         options = new InstantiateVAppTemplateOptions();
-      }
-
-      if (networkConfig == null)
-         networkConfig = ImmutableSet.of(networkConfigDecorator.apply(null));
-
-      try {
-         return stringBinder.bindToRequest(request, generateXml(name, options.getDescription(), options.shouldDeploy(),
-                  options.shouldPowerOn(), template, networkConfig));
-      } catch (ParserConfigurationException e) {
-         throw new RuntimeException(e);
-      } catch (FactoryConfigurationError e) {
-         throw new RuntimeException(e);
-      } catch (TransformerException e) {
-         throw new RuntimeException(e);
-      }
-
-   }
-
-   @VisibleForTesting
-   Set<Vm> ifCustomizationScriptIsSetGetVmsInTemplate(String customizationScript, final URI template) {
-      Set<Vm> vms = ImmutableSet.of();
-      if (customizationScript != null) {
-         VAppTemplate vAppTemplate = templateCache.getUnchecked(template);
-         checkArgument(vAppTemplate != null, "vAppTemplate %s not found!", template);
-         vms = vAppTemplate.getChildren();
-         checkArgument(!vms.isEmpty(), "no vms found in vAppTemplate %s", vAppTemplate);
-      }
-      return vms;
-   }
-
-   protected static final class NetworkConfigDecorator implements Function<NetworkConfig, NetworkConfig> {
-      private final VAppTemplate template;
-      private final URI defaultNetwork;
-      private final FenceMode defaultFenceMode;
-      private final Function<VAppTemplate, String> defaultNetworkNameInTemplate;
-
-      protected NetworkConfigDecorator(VAppTemplate template, URI defaultNetwork, FenceMode defaultFenceMode,
-               Function<VAppTemplate, String> defaultNetworkNameInTemplate) {
-         this.template = checkNotNull(template, "template");
-         this.defaultNetwork = checkNotNull(defaultNetwork, "defaultNetwork");
-         this.defaultFenceMode = checkNotNull(defaultFenceMode, "defaultFenceMode");
-         this.defaultNetworkNameInTemplate = checkNotNull(defaultNetworkNameInTemplate, "defaultNetworkNameInTemplate");
-      }
-
-      @Override
-      public NetworkConfig apply(NetworkConfig from) {
-         if (from == null)
-            return new NetworkConfig(defaultNetworkNameInTemplate.apply(template), defaultNetwork, defaultFenceMode);
-         URI network = ifNullDefaultTo(from.getParentNetwork(), defaultNetwork);
-         FenceMode fenceMode = ifNullDefaultTo(from.getFenceMode(), defaultFenceMode);
-         // using conditional statement instead of ifNullDefaultTo so that we lazy invoke the
-         // function, as it is an expensive one.
-         String networkName = from.getNetworkName() != null ? from.getNetworkName() : defaultNetworkNameInTemplate
-                  .apply(template);
-         return new NetworkConfig(networkName, network, fenceMode);
-      }
-   }
-
-   protected String generateXml(String name, @Nullable String description, boolean deploy, boolean powerOn,
-         URI template, Iterable<NetworkConfig> networkConfig)
-         throws ParserConfigurationException, FactoryConfigurationError, TransformerException {
-      XMLBuilder rootBuilder = buildRoot(name).a("deploy", deploy + "").a("powerOn", powerOn + "");
-      if (description != null)
-         rootBuilder.e("Description").t(description);
-      XMLBuilder instantiationParamsBuilder = rootBuilder.e("InstantiationParams");
-      addNetworkConfig(instantiationParamsBuilder, networkConfig);
-      rootBuilder.e("Source").a("href", template.toASCIIString());
-      rootBuilder.e("AllEULAsAccepted").t("true");
-
-      Properties outputProperties = new Properties();
-      outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
-      return rootBuilder.asString(outputProperties);
-   }
-
-   protected void addNetworkConfig(XMLBuilder instantiationParamsBuilder,
-         Iterable<NetworkConfig> networkConfig) {
-      XMLBuilder networkConfigBuilder = instantiationParamsBuilder.e("NetworkConfigSection");
-      networkConfigBuilder.e("ovf:Info").t("Configuration parameters for logical networks");
-      for (NetworkConfig n : networkConfig) {
-         XMLBuilder configurationBuilder = networkConfigBuilder.e("NetworkConfig").a("networkName", n.getNetworkName())
-               .e("Configuration");
-         configurationBuilder.e("ParentNetwork").a("href", n.getParentNetwork().toASCIIString());
-         if (n.getFenceMode() != null) {
-            configurationBuilder.e("FenceMode").t(n.getFenceMode().toString());
-         }
-      }
-   }
-
-   protected XMLBuilder buildRoot(String name) throws ParserConfigurationException, FactoryConfigurationError {
-      return XMLBuilder.create("InstantiateVAppTemplateParams").a("name", name).a("xmlns", ns)
-            .a("xmlns:ovf", "http://schemas.dmtf.org/ovf/envelope/1");
-   }
-
-   protected InstantiateVAppTemplateOptions findOptionsInArgsOrNull(GeneratedHttpRequest gRequest) {
-      for (Object arg : gRequest.getInvocation().getArgs()) {
-         if (arg instanceof InstantiateVAppTemplateOptions) {
-            return (InstantiateVAppTemplateOptions) arg;
-         } else if (arg instanceof InstantiateVAppTemplateOptions[]) {
-            InstantiateVAppTemplateOptions[] options = (InstantiateVAppTemplateOptions[]) arg;
-            return (options.length > 0) ? options[0] : null;
-         }
-      }
-      return null;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException("InstantiateVAppTemplateParams is needs parameters");
-   }
-
-   public static <T> T ifNullDefaultTo(T value, T defaultValue) {
-      return value != null ? value : checkNotNull(defaultValue, "defaultValue");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindMemoryToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindMemoryToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindMemoryToXmlPayload.java
deleted file mode 100644
index e6a1cd4..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindMemoryToXmlPayload.java
+++ /dev/null
@@ -1,75 +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.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA;
-
-import java.util.Properties;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cim.ResourceAllocationSettingData.ResourceType;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.binders.BindToStringPayload;
-
-import com.google.common.base.Throwables;
-import com.google.inject.Inject;
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindMemoryToXmlPayload extends BindToStringPayload {
-   protected final String ns;
-   protected final String schema;
-
-   @Inject
-   public BindMemoryToXmlPayload(BindToStringPayload stringBinder, @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns,
-         @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) {
-      this.ns = ns;
-      this.schema = schema;
-   }
-
-   private static final String RESOURCE_ALLOCATION_NS = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData";
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
-      checkArgument(checkNotNull(payload, "memoryInMB") instanceof Integer, "this binder is only valid for Integers!");
-      Integer memoryInMB = Integer.class.cast(payload);
-      XMLBuilder cpuItem;
-      try {
-         cpuItem = XMLBuilder.create("Item").a("xmlns", ns).a("xmlns:rasd", RESOURCE_ALLOCATION_NS);
-         cpuItem.e("rasd:AllocationUnits").t("byte * 2^20");
-         cpuItem.e("rasd:Description").t("Memory Size");
-         cpuItem.e("rasd:ElementName").t(memoryInMB.toString() + " MB of memory");
-         cpuItem.e("rasd:InstanceID").t("5");
-         cpuItem.e("rasd:Reservation").t("0");
-         cpuItem.e("rasd:ResourceType").t(ResourceType.MEMORY.value());
-         cpuItem.e("rasd:VirtualQuantity").t(memoryInMB.toString());
-         cpuItem.e("rasd:Weight").t("0");
-         Properties outputProperties = new Properties();
-         outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
-         request = super.bindToRequest(request, cpuItem.asString(outputProperties));
-      } catch (Exception e) {
-         Throwables.propagate(e);
-      }
-      return request;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindNetworkConnectionSectionToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindNetworkConnectionSectionToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindNetworkConnectionSectionToXmlPayload.java
deleted file mode 100644
index 6a27725..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindNetworkConnectionSectionToXmlPayload.java
+++ /dev/null
@@ -1,101 +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.binders;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA;
-
-import java.util.Properties;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.logging.Logger;
-import org.jclouds.rest.binders.BindToStringPayload;
-import org.jclouds.vcloud.domain.NetworkConnection;
-import org.jclouds.vcloud.domain.NetworkConnectionSection;
-
-import com.google.common.base.Throwables;
-import com.google.inject.Inject;
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindNetworkConnectionSectionToXmlPayload extends BindToStringPayload {
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   protected final String ns;
-   protected final String schema;
-
-   @Inject
-   public BindNetworkConnectionSectionToXmlPayload(BindToStringPayload stringBinder,
-         @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) {
-      this.ns = ns;
-      this.schema = schema;
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
-      checkArgument(checkNotNull(payload, "NetworkConnectionSection") instanceof NetworkConnectionSection,
-            "this binder is only valid for NetworkConnectionSection!");
-      NetworkConnectionSection net = NetworkConnectionSection.class.cast(payload);
-      XMLBuilder networkConnectionSection;
-      try {
-         networkConnectionSection = XMLBuilder.create("NetworkConnectionSection").a("xmlns", ns)
-               .a("xmlns:ovf", "http://schemas.dmtf.org/ovf/envelope/1").a("type", net.getType())
-               .a("href", net.getHref().toASCIIString()).a("ovf:required", "false");
-         networkConnectionSection.e("ovf:Info").t(net.getInfo());
-
-         if (net.getPrimaryNetworkConnectionIndex() != null)
-            networkConnectionSection.e("PrimaryNetworkConnectionIndex").t(
-                  net.getPrimaryNetworkConnectionIndex().toString());
-         for (NetworkConnection networkConnection : net.getConnections()) {
-            XMLBuilder networkConnectionSectionChild = networkConnectionSection.e("NetworkConnection").a("network",
-                  networkConnection.getNetwork());
-            networkConnectionSectionChild.e("NetworkConnectionIndex").t(
-                  networkConnection.getNetworkConnectionIndex() + "");
-            if (networkConnection.getExternalIpAddress() != null)
-               networkConnectionSectionChild.e("ExternalIpAddress").t(networkConnection.getExternalIpAddress());
-            if (networkConnection.getIpAddress() != null)
-               networkConnectionSectionChild.e("IpAddress").t(networkConnection.getIpAddress());
-            networkConnectionSectionChild.e("IsConnected").t(networkConnection.isConnected() + "");
-            if (networkConnection.getMACAddress() != null)
-               networkConnectionSectionChild.e("MACAddress").t(networkConnection.getMACAddress());
-            if (networkConnection.getIpAddressAllocationMode() != null)
-               networkConnectionSectionChild.e("IpAddressAllocationMode").t(
-                     networkConnection.getIpAddressAllocationMode().toString());
-         }
-
-         if (net.getEdit() != null)
-            networkConnectionSection.e("Link").a("rel", "edit").a("type", net.getType())
-                  .a("href", net.getHref().toASCIIString());
-
-         Properties outputProperties = new Properties();
-         outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
-         request = super.bindToRequest(request, networkConnectionSection.asString(outputProperties));
-         request.getPayload().getContentMetadata().setContentType(net.getType());
-      } catch (Exception e) {
-         Throwables.propagate(e);
-      }
-      return request;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindParamsToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindParamsToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindParamsToXmlPayload.java
deleted file mode 100644
index f613c1b..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindParamsToXmlPayload.java
+++ /dev/null
@@ -1,76 +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.binders;
-
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.rest.binders.BindToStringPayload;
-
-import com.google.inject.Inject;
-import com.jamesmurty.utils.XMLBuilder;
-
-@Singleton
-public class BindParamsToXmlPayload implements MapBinder {
-
-   protected final String ns;
-   protected final BindToStringPayload stringBinder;
-   protected final String element;
-
-   @Inject
-   public BindParamsToXmlPayload(String element, BindToStringPayload stringBinder,
-            @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns) {
-      this.element = element;
-      this.ns = ns;
-      this.stringBinder = stringBinder;
-   }
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      try {
-         return stringBinder.bindToRequest(request, generateXml(postParams));
-      } catch (Exception e) {
-         throw new RuntimeException(e);
-      }
-   }
-
-   private String generateXml(Map<String, Object> postParams) throws ParserConfigurationException,
-            FactoryConfigurationError, TransformerException {
-      XMLBuilder rootBuilder = XMLBuilder.create(element);
-      for (Entry<String, Object> entry : postParams.entrySet())
-         rootBuilder.a(entry.getKey(), (String) entry.getValue());
-      rootBuilder.a("xmlns", ns);
-      Properties outputProperties = new Properties();
-      outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
-      return rootBuilder.asString(outputProperties);
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalArgumentException("incorrect usage");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindUndeployVAppParamsToXmlPayload.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindUndeployVAppParamsToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindUndeployVAppParamsToXmlPayload.java
deleted file mode 100644
index d95846e..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindUndeployVAppParamsToXmlPayload.java
+++ /dev/null
@@ -1,37 +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.binders;
-
-import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.rest.binders.BindToStringPayload;
-
-import com.google.inject.Inject;
-
-@Singleton
-public class BindUndeployVAppParamsToXmlPayload extends BindParamsToXmlPayload {
-
-   @Inject
-   public BindUndeployVAppParamsToXmlPayload(BindToStringPayload stringBinder,
-            @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns) {
-      super("UndeployVAppParams", stringBinder, ns);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndCatalogNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndCatalogNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndCatalogNameToEndpoint.java
deleted file mode 100644
index 09c81e5..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndCatalogNameToEndpoint.java
+++ /dev/null
@@ -1,75 +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.binders;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.vcloud.domain.Org;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.Catalog;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.Iterables;
-
-@Singleton
-public class OrgNameAndCatalogNameToEndpoint implements MapBinder {
-   private final Supplier<Map<String, Org>> orgMap;
-   private final Supplier<ReferenceType> defaultOrg;
-   private final Supplier<ReferenceType> defaultCatalog;
-
-   @Inject
-   public OrgNameAndCatalogNameToEndpoint(Supplier<Map<String, Org>> orgMap,
-         @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg,
-         @Catalog Supplier<ReferenceType> defaultCatalog) {
-      this.orgMap = orgMap;
-      this.defaultOrg = defaultOrg;
-      this.defaultCatalog = defaultCatalog;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Object org = postParams.get("orgName");
-      Object catalog = postParams.get("catalogName");
-      if (org == null && catalog == null)
-         return (R) request.toBuilder().endpoint(defaultCatalog.get().getHref()).build();
-      else if (org == null)
-         org = defaultOrg.get().getName();
-
-      try {
-         Map<String, ReferenceType> catalogs = checkNotNull(orgMap.get().get(org)).getCatalogs();
-         URI endpoint = catalog == null ? Iterables.getLast(catalogs.values()).getHref() : catalogs.get(catalog).getHref();
-         return (R) request.toBuilder().endpoint(endpoint).build();
-      } catch (NullPointerException e) {
-         throw new NoSuchElementException(org + "/" + catalog + " not found in " + orgMap.get());
-      }
-   }
-   
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException(getClass() + " needs parameters");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndVDCNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndVDCNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndVDCNameToEndpoint.java
deleted file mode 100644
index b4bc580..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameAndVDCNameToEndpoint.java
+++ /dev/null
@@ -1,74 +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.binders;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.vcloud.domain.Org;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.VDC;
-
-import com.google.common.base.Supplier;
-import com.google.common.collect.Iterables;
-
-@Singleton
-public class OrgNameAndVDCNameToEndpoint implements MapBinder {
-   private final Supplier<Map<String, Org>> orgNameToVDCEndpoint;
-   private final Supplier<ReferenceType> defaultOrg;
-   private final Supplier<ReferenceType> defaultVDC;
-
-   @Inject
-   public OrgNameAndVDCNameToEndpoint(Supplier<Map<String, Org>> orgNameToVDCEndpoint,
-         @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
-      this.orgNameToVDCEndpoint = orgNameToVDCEndpoint;
-      this.defaultOrg = defaultOrg;
-      this.defaultVDC = defaultVDC;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Object org = postParams.get("orgName");
-      Object vdc = postParams.get("vdcName");
-      if (org == null && vdc == null)
-         return (R) request.toBuilder().endpoint(defaultVDC.get().getHref()).build();
-      else if (org == null)
-         org = defaultOrg.get().getName();
-
-      try {
-         Map<String, ReferenceType> vdcs = checkNotNull(orgNameToVDCEndpoint.get().get(org)).getVDCs();
-         URI endpoint = vdc == null ? Iterables.getLast(vdcs.values()).getHref() : vdcs.get(vdc).getHref();
-         return (R) request.toBuilder().endpoint(endpoint).build();
-      } catch (NullPointerException e) {
-         throw new NoSuchElementException(org + "/" + vdc + " not found in " + orgNameToVDCEndpoint.get());
-      }
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException(getClass() + " needs parameters");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameItemNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameItemNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameItemNameToEndpoint.java
deleted file mode 100644
index 2d9f762..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameItemNameToEndpoint.java
+++ /dev/null
@@ -1,73 +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.binders;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.Catalog;
-import org.jclouds.vcloud.endpoints.Org;
-
-import com.google.common.base.Supplier;
-
-@Singleton
-public class OrgNameCatalogNameItemNameToEndpoint implements MapBinder {
-   private final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap;
-   private final Supplier<ReferenceType> defaultOrg;
-   private final Supplier<ReferenceType> defaultCatalog;
-
-   @Inject
-   public OrgNameCatalogNameItemNameToEndpoint(
-         Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.Catalog>>> orgCatalogMap,
-         @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
-      this.orgCatalogMap = orgCatalogMap;
-      this.defaultOrg = defaultOrg;
-      this.defaultCatalog = defaultCatalog;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Object org = postParams.get("orgName");
-      Object catalog = postParams.get("catalogName");
-      Object catalogItem = postParams.get("itemName");
-      if (org == null)
-         org = defaultOrg.get().getName();
-      if (catalog == null)
-         catalog = defaultCatalog.get().getName();
-      try {
-         Map<String, org.jclouds.vcloud.domain.Catalog> catalogs = checkNotNull(orgCatalogMap.get().get(org));
-         return (R) request.toBuilder().endpoint(catalogs.get(catalog).get(catalogItem).getHref()).build();
-      } catch (NullPointerException e) {
-         throw new NoSuchElementException(org + "/" + catalog + "/" + catalogItem + " not found in "
-               + orgCatalogMap.get());
-      }
-   }
-   
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException(getClass() + " needs parameters");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameVAppTemplateNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameVAppTemplateNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameVAppTemplateNameToEndpoint.java
deleted file mode 100644
index a8b798d..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameCatalogNameVAppTemplateNameToEndpoint.java
+++ /dev/null
@@ -1,86 +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.binders;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.vcloud.domain.CatalogItem;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.Catalog;
-import org.jclouds.vcloud.endpoints.Org;
-
-import com.google.common.base.Supplier;
-
-@Singleton
-public class OrgNameCatalogNameVAppTemplateNameToEndpoint implements MapBinder {
-   private final Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap;
-   private final Supplier<ReferenceType> defaultOrg;
-   private final Supplier<ReferenceType> defaultCatalog;
-
-   @Inject
-   public OrgNameCatalogNameVAppTemplateNameToEndpoint(
-            Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> orgCatalogItemMap,
-            @Org Supplier<ReferenceType> defaultOrg, @Catalog Supplier<ReferenceType> defaultCatalog) {
-      this.orgCatalogItemMap = orgCatalogItemMap;
-      this.defaultOrg = defaultOrg;
-      this.defaultCatalog = defaultCatalog;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Object org = postParams.get("orgName");
-      Object catalog = postParams.get("catalogName");
-      Object catalogItem = postParams.get("itemName");
-      if (org == null)
-         org = defaultOrg.get().getName();
-      if (catalog == null)
-         catalog = defaultCatalog.get().getName();
-      Map<String, Map<String, Map<String, CatalogItem>>> orgCatalogItemMap = this.orgCatalogItemMap.get();
-
-      if (!orgCatalogItemMap.containsKey(org))
-         throw new NoSuchElementException("org: " + org + " not found in " + orgCatalogItemMap.keySet());
-      Map<String, Map<String,  CatalogItem>> catalogs = orgCatalogItemMap.get(org);
-
-      if (!catalogs.containsKey(catalog))
-         throw new NoSuchElementException("catalog: " + org + "/" + catalog + " not found in " + catalogs.keySet());
-      Map<String, CatalogItem> catalogMap = catalogs.get(catalog);
-
-      if (!catalogMap.containsKey(catalogItem))
-         throw new NoSuchElementException("item: " + org + "/" + catalog + "/" + catalogItem + " not found in "
-                  + catalogMap.keySet());
-      CatalogItem item = catalogMap.get(catalogItem);
-
-      URI endpoint = checkNotNull(item.getEntity(),
-            "item: " + org + "/" + catalog + "/" + catalogItem + " has no entity").getHref();
-      return (R) request.toBuilder().endpoint(endpoint).build();
-   }
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException(getClass() + " needs parameters");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameNetworkNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameNetworkNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameNetworkNameToEndpoint.java
deleted file mode 100644
index 11bfeac..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameNetworkNameToEndpoint.java
+++ /dev/null
@@ -1,50 +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.binders;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.Org;
-import org.jclouds.vcloud.endpoints.VDC;
-
-import com.google.common.base.Supplier;
-
-@Singleton
-public class OrgNameVDCNameNetworkNameToEndpoint extends OrgNameVDCNameResourceNameToEndpoint {
-   @Inject
-   public OrgNameVDCNameNetworkNameToEndpoint(
-         Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
-         @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
-      super(orgVDCMap, defaultOrg, defaultVDC);
-   }
-
-   protected URI getEndpointOfResourceInVDC(Object org, Object vDC, Object resource,
-         org.jclouds.vcloud.domain.VDC vDCObject) {
-      ReferenceType resourceEntity = vDCObject.getAvailableNetworks().get(resource);
-      if (resourceEntity == null)
-         throw new NoSuchElementException("network " + resource + " in vdc " + vDC + ", org " + org + " not found in "
-               + vDCObject.getAvailableNetworks().keySet());
-      return resourceEntity.getHref();
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceEntityNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceEntityNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceEntityNameToEndpoint.java
deleted file mode 100644
index effcc49..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceEntityNameToEndpoint.java
+++ /dev/null
@@ -1,50 +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.binders;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.endpoints.Org;
-import org.jclouds.vcloud.endpoints.VDC;
-
-import com.google.common.base.Supplier;
-
-@Singleton
-public class OrgNameVDCNameResourceEntityNameToEndpoint extends OrgNameVDCNameResourceNameToEndpoint {
-   @Inject
-   public OrgNameVDCNameResourceEntityNameToEndpoint(
-         Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
-         @Org Supplier<ReferenceType> defaultOrg, @VDC Supplier<ReferenceType> defaultVDC) {
-      super(orgVDCMap, defaultOrg, defaultVDC);
-   }
-
-   protected URI getEndpointOfResourceInVDC(Object org, Object vDC, Object resource,
-         org.jclouds.vcloud.domain.VDC vDCObject) {
-      ReferenceType resourceEntity = vDCObject.getResourceEntities().get(resource);
-      if (resourceEntity == null)
-         throw new NoSuchElementException("entity " + resource + " in vdc " + vDC + ", org " + org + " not found in "
-               + vDCObject.getResourceEntities().keySet());
-      return resourceEntity.getHref();
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceNameToEndpoint.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceNameToEndpoint.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceNameToEndpoint.java
deleted file mode 100644
index 99ac848..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/OrgNameVDCNameResourceNameToEndpoint.java
+++ /dev/null
@@ -1,77 +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.binders;
-
-import static com.google.common.base.Preconditions.checkState;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import javax.inject.Inject;
-
-import org.jclouds.http.HttpRequest;
-import org.jclouds.rest.MapBinder;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.domain.VDC;
-import org.jclouds.vcloud.endpoints.Org;
-
-import com.google.common.base.Supplier;
-public abstract class OrgNameVDCNameResourceNameToEndpoint implements MapBinder {
-
-   protected final Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap;
-   protected final Supplier<ReferenceType> defaultOrg;
-   protected final Supplier<ReferenceType> defaultVDC;
-
-   @Inject
-   public OrgNameVDCNameResourceNameToEndpoint(
-         Supplier<Map<String, Map<String, org.jclouds.vcloud.domain.VDC>>> orgVDCMap,
-         @Org Supplier<ReferenceType> defaultOrg, @org.jclouds.vcloud.endpoints.VDC Supplier<ReferenceType> defaultVDC) {
-      this.orgVDCMap = orgVDCMap;
-      this.defaultOrg = defaultOrg;
-      this.defaultVDC = defaultVDC;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) {
-      Object org = postParams.get("orgName");
-      Object vDC = postParams.get("vdcName");
-      Object resource = postParams.get("resourceName");
-      if (org == null)
-         org = defaultOrg.get().getName();
-      if (vDC == null)
-         vDC = defaultVDC.get().getName();
-      Map<String, Map<String, org.jclouds.vcloud.domain.VDC>> orgToVDCs = orgVDCMap.get();
-      checkState(orgToVDCs != null, "could not get map of org name to vdcs!");
-      Map<String, org.jclouds.vcloud.domain.VDC> vDCs = orgToVDCs.get(org);
-      if (vDCs == null)
-         throw new NoSuchElementException("org " + org + " not found in " + orgToVDCs.keySet());
-      org.jclouds.vcloud.domain.VDC vDCObject = vDCs.get(vDC);
-      if (vDCObject == null)
-         throw new NoSuchElementException("vdc " + vDC + " in org " + org + " not found in " + vDCs.keySet());
-      URI endpoint = getEndpointOfResourceInVDC(org, vDC, resource, vDCObject);
-      return (R) request.toBuilder().endpoint(endpoint).build();
-   }
-
-   protected abstract URI getEndpointOfResourceInVDC(Object org, Object vDC, Object resource, VDC vDCObject);
-
-   @Override
-   public <R extends HttpRequest> R bindToRequest(R request, Object input) {
-      throw new IllegalStateException(getClass() + " needs parameters");
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceContextModule.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceContextModule.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceContextModule.java
deleted file mode 100644
index d3538c0..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceContextModule.java
+++ /dev/null
@@ -1,37 +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.compute.config;
-
-import org.jclouds.compute.config.ComputeServiceAdapterContextModule;
-import org.jclouds.domain.Location;
-import org.jclouds.vcloud.domain.VApp;
-import org.jclouds.vcloud.domain.VAppTemplate;
-
-/**
- * Configures the {@link VCloudComputeServiceContext}; requires {@link VCloudComputeClientImpl}
- * bound.
- */
-public class VCloudComputeServiceContextModule extends
-         ComputeServiceAdapterContextModule<VApp, VAppTemplate, VAppTemplate, Location> {
-
-   @Override
-   protected void configure() {
-      super.configure();
-      install(new VCloudComputeServiceDependenciesModule());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceDependenciesModule.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceDependenciesModule.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceDependenciesModule.java
deleted file mode 100644
index 8b53c90..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/config/VCloudComputeServiceDependenciesModule.java
+++ /dev/null
@@ -1,150 +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.compute.config;
-
-
-import java.util.Map;
-
-import javax.inject.Singleton;
-
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.domain.Location;
-import org.jclouds.functions.IdentityFunction;
-import org.jclouds.vcloud.compute.functions.HardwareForVApp;
-import org.jclouds.vcloud.compute.functions.HardwareForVAppTemplate;
-import org.jclouds.vcloud.compute.functions.ImageForVAppTemplate;
-import org.jclouds.vcloud.compute.functions.VAppToNodeMetadata;
-import org.jclouds.vcloud.compute.internal.VCloudTemplateBuilderImpl;
-import org.jclouds.vcloud.compute.options.VCloudTemplateOptions;
-import org.jclouds.vcloud.compute.strategy.VCloudComputeServiceAdapter;
-import org.jclouds.vcloud.domain.Org;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.domain.Status;
-import org.jclouds.vcloud.domain.VApp;
-import org.jclouds.vcloud.domain.VAppTemplate;
-import org.jclouds.vcloud.domain.network.FenceMode;
-import org.jclouds.vcloud.domain.network.NetworkConfig;
-import org.jclouds.vcloud.endpoints.Network;
-import org.jclouds.vcloud.functions.VAppTemplatesInOrg;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.base.Suppliers;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.TypeLiteral;
-
-public class VCloudComputeServiceDependenciesModule extends AbstractModule {
-
-   @VisibleForTesting
-   public static final Map<Status, NodeMetadata.Status> toPortableNodeStatus = ImmutableMap
-            .<Status, NodeMetadata.Status> builder()
-            .put(Status.OFF, NodeMetadata.Status.SUSPENDED)
-            .put(Status.ON, NodeMetadata.Status.RUNNING)
-            .put(Status.RESOLVED, NodeMetadata.Status.PENDING)
-            .put(Status.MIXED, NodeMetadata.Status.PENDING)
-            .put(Status.UNKNOWN, NodeMetadata.Status.UNRECOGNIZED)
-            .put(Status.UNRECOGNIZED, NodeMetadata.Status.UNRECOGNIZED)
-            .put(Status.DEPLOYED, NodeMetadata.Status.PENDING)
-            .put(Status.SUSPENDED, NodeMetadata.Status.SUSPENDED)
-            .put(Status.WAITING_FOR_INPUT, NodeMetadata.Status.PENDING)
-            .put(Status.INCONSISTENT, NodeMetadata.Status.PENDING)
-            .put(Status.ERROR, NodeMetadata.Status.ERROR)
-            .put(Status.UNRESOLVED, NodeMetadata.Status.PENDING).build();
-
-   @Singleton
-   @Provides
-   protected Map<Status, NodeMetadata.Status> toPortableNodeStatus() {
-      return toPortableNodeStatus;
-   }
-   
-   @VisibleForTesting
-   public static final Map<Status, Image.Status> toPortableImageStatus = ImmutableMap
-            .<Status, Image.Status> builder()
-            .put(Status.RESOLVED, Image.Status.AVAILABLE)
-            .put(Status.OFF, Image.Status.AVAILABLE)
-            .put(Status.MIXED, Image.Status.PENDING)
-            .put(Status.UNKNOWN, Image.Status.UNRECOGNIZED)
-            .put(Status.UNRECOGNIZED, Image.Status.UNRECOGNIZED)
-            .put(Status.DEPLOYED, Image.Status.PENDING)
-            .put(Status.PENDING_DESCRIPTOR, Image.Status.PENDING)
-            .put(Status.COPYING, Image.Status.PENDING)
-            .put(Status.PENDING_CONTENTS, Image.Status.PENDING)
-            .put(Status.QUARANTINED, Image.Status.PENDING)
-            .put(Status.QUARANTINE_EXPIRED, Image.Status.ERROR)
-            .put(Status.REJECTED, Image.Status.ERROR)
-            .put(Status.TRANSFER_TIMEOUT, Image.Status.ERROR)
-            .put(Status.ERROR, Image.Status.ERROR)
-            .put(Status.UNRESOLVED, Image.Status.PENDING).build();
-
-   @Singleton
-   @Provides
-   protected Map<Status, Image.Status> toPortableImageStatus() {
-      return toPortableImageStatus;
-   }
-
-   @SuppressWarnings("unchecked")
-   @Override
-   protected void configure() {
-      bind(new TypeLiteral<ComputeServiceAdapter<VApp, VAppTemplate, VAppTemplate, Location>>() {
-      }).to(VCloudComputeServiceAdapter.class);
-
-      bind(new TypeLiteral<Function<VApp, NodeMetadata>>() {
-      }).to(VAppToNodeMetadata.class);
-
-      bind(TemplateOptions.class).to(VCloudTemplateOptions.class);
-      bind(TemplateBuilder.class).to(VCloudTemplateBuilderImpl.class);
-
-      bind(new TypeLiteral<Function<VApp, Hardware>>() {
-      }).to(new TypeLiteral<HardwareForVApp>() {
-      });
-
-      bind(new TypeLiteral<Function<Org, Iterable<VAppTemplate>>>() {
-      }).to(VAppTemplatesInOrg.class);
-      bind(new TypeLiteral<Function<VAppTemplate, Image>>() {
-      }).to(ImageForVAppTemplate.class);
-      bind(new TypeLiteral<Function<VAppTemplate, Hardware>>() {
-      }).to(HardwareForVAppTemplate.class);
-
-      // we aren't converting from a provider-specific type
-      bind(new TypeLiteral<Function<Location, Location>>() {
-      }).to(Class.class.cast(IdentityFunction.class));
-   }
-
-
-   @Provides
-   @Singleton
-   public Supplier<NetworkConfig> networkConfig(@Network Supplier<ReferenceType> network,
-         final FenceMode defaultFenceMode) {
-      return Suppliers.compose(new Function<ReferenceType, NetworkConfig>() {
-
-         @Override
-         public NetworkConfig apply(ReferenceType input) {
-            return new NetworkConfig(input.getName(), input.getHref(), defaultFenceMode);
-         }
-
-      }, network);
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/FindLocationForResource.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/FindLocationForResource.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/FindLocationForResource.java
deleted file mode 100644
index f7e2cdf..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/FindLocationForResource.java
+++ /dev/null
@@ -1,66 +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.compute.functions;
-
-import java.net.URI;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.domain.Location;
-import org.jclouds.logging.Logger;
-import org.jclouds.vcloud.domain.ReferenceType;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-
-@Singleton
-public class FindLocationForResource implements Function<ReferenceType, Location> {
-
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   final Supplier<Set<? extends Location>> locations;
-
-   @Inject
-   public FindLocationForResource(@Memoized Supplier<Set<? extends Location>> locations) {
-      this.locations = locations;
-   }
-
-   /**
-    * searches for a location associated with this resource.
-    * 
-    * @throws NoSuchElementException
-    *            if not found
-    */
-   public Location apply(ReferenceType resource) {
-      for (Location input : locations.get()) {
-         do {
-            // The "name" isn't always present, ex inside a vApp we have a rel
-            // link that only includes href and type.
-            if (URI.create(input.getId()).equals(resource.getHref()))
-               return input;
-         } while ((input = input.getParent()) != null);
-      }
-      throw new NoSuchElementException(String.format("resource: %s not found in locations: %s", resource,
-            locations.get()));
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVApp.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVApp.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVApp.java
deleted file mode 100644
index 6ec2bf8..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVApp.java
+++ /dev/null
@@ -1,68 +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.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.predicates.ImagePredicates;
-import org.jclouds.domain.Location;
-import org.jclouds.logging.Logger;
-import org.jclouds.ovf.VirtualHardwareSection;
-import org.jclouds.vcloud.domain.ReferenceType;
-import org.jclouds.vcloud.domain.VApp;
-import org.jclouds.vcloud.domain.Vm;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-
-public class HardwareForVApp implements Function<VApp, Hardware> {
-
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   private final Function<ReferenceType, Location> findLocationForResource;
-   private final VCloudHardwareBuilderFromResourceAllocations rasdToHardwareBuilder;
-
-   @Inject
-   protected HardwareForVApp(Function<ReferenceType, Location> findLocationForResource,
-            VCloudHardwareBuilderFromResourceAllocations rasdToHardwareBuilder) {
-      this.findLocationForResource = checkNotNull(findLocationForResource, "findLocationForResource");
-      this.rasdToHardwareBuilder = checkNotNull(rasdToHardwareBuilder, "rasdToHardwareBuilder");
-   }
-
-   @Override
-   public Hardware apply(VApp from) {
-      checkNotNull(from, "VApp");
-      // TODO make this work with composite vApps
-      Vm vm = from.getChildren().isEmpty() ? null : Iterables.get(from.getChildren(), 0);
-      if (vm == null)
-         return null;
-
-      VirtualHardwareSection hardware = vm.getVirtualHardwareSection();
-      HardwareBuilder builder = rasdToHardwareBuilder.apply(hardware.getItems());
-      builder.location(findLocationForResource.apply(checkNotNull(from, "from").getVDC()));
-      builder.ids(from.getHref().toASCIIString()).name(from.getName()).supportsImage(
-               ImagePredicates.idEquals(from.getHref().toASCIIString()));
-      builder.hypervisor("VMware");
-      return builder.build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVAppTemplate.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVAppTemplate.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVAppTemplate.java
deleted file mode 100644
index 46d1627..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/HardwareForVAppTemplate.java
+++ /dev/null
@@ -1,81 +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.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.predicates.ImagePredicates;
-import org.jclouds.logging.Logger;
-import org.jclouds.ovf.Envelope;
-import org.jclouds.ovf.VirtualHardwareSection;
-import org.jclouds.vcloud.domain.VAppTemplate;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-
-@Singleton
-public class HardwareForVAppTemplate implements Function<VAppTemplate, Hardware> {
-
-   @Resource
-   protected Logger logger = Logger.NULL;
-
-   private final Function<VAppTemplate, Envelope> templateToEnvelope;
-   private final FindLocationForResource findLocationForResource;
-   private final VCloudHardwareBuilderFromResourceAllocations rasdToHardwareBuilder;
-
-   @Inject
-   protected HardwareForVAppTemplate(Function<VAppTemplate, Envelope> templateToEnvelope,
-            FindLocationForResource findLocationForResource,
-            VCloudHardwareBuilderFromResourceAllocations rasdToHardwareBuilder) {
-      this.templateToEnvelope = checkNotNull(templateToEnvelope, "templateToEnvelope");
-      this.findLocationForResource = checkNotNull(findLocationForResource, "findLocationForResource");
-      this.rasdToHardwareBuilder = checkNotNull(rasdToHardwareBuilder, "rasdToHardwareBuilder");
-   }
-
-   @Override
-   public Hardware apply(VAppTemplate from) {
-      checkNotNull(from, "VAppTemplate");
-
-      Envelope ovf = templateToEnvelope.apply(from);
-
-      if (ovf.getVirtualSystem().getVirtualHardwareSections().size() > 1) {
-         logger.warn("multiple hardware choices found. using first", ovf);
-      }
-      VirtualHardwareSection hardware = Iterables.get(ovf.getVirtualSystem().getVirtualHardwareSections(), 0);
-      HardwareBuilder builder = rasdToHardwareBuilder.apply(hardware.getItems());
-      if (from.getVDC() != null) {
-         builder.location(findLocationForResource.apply(from.getVDC()));
-      } else {
-         // otherwise, it could be in a public catalog, which is not assigned to a VDC
-      }
-      builder.ids(from.getHref().toASCIIString()).name(from.getName()).supportsImage(
-               ImagePredicates.idEquals(from.getHref().toASCIIString()));
-      builder.hypervisor("VMware");
-      return builder.build();
-
-   }
-
-   protected String getName(String name) {
-      return name;
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/ImageForVAppTemplate.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/ImageForVAppTemplate.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/ImageForVAppTemplate.java
deleted file mode 100644
index eb70f28..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/ImageForVAppTemplate.java
+++ /dev/null
@@ -1,79 +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.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.CIMOperatingSystem;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.logging.Logger;
-import org.jclouds.ovf.Envelope;
-import org.jclouds.vcloud.domain.Status;
-import org.jclouds.vcloud.domain.VAppTemplate;
-
-import com.google.common.base.Function;
-
-@Singleton
-public class ImageForVAppTemplate implements Function<VAppTemplate, Image> {
-
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   public Logger logger = Logger.NULL;
-
-   private final Map<Status, Image.Status> toPortableImageStatus;
-   private final Function<VAppTemplate, Envelope> templateToEnvelope;
-   private final FindLocationForResource findLocationForResource;
-
-
-   @Inject
-   protected ImageForVAppTemplate(Map<Status, Image.Status> toPortableImageStatus, Function<VAppTemplate, Envelope> templateToEnvelope,
-            FindLocationForResource findLocationForResource) {
-      this.toPortableImageStatus = checkNotNull(toPortableImageStatus, "toPortableImageStatus");
-      this.templateToEnvelope = checkNotNull(templateToEnvelope, "templateToEnvelope");
-      this.findLocationForResource = checkNotNull(findLocationForResource, "findLocationForResource");
-   }
-
-   @Override
-   public Image apply(VAppTemplate from) {
-      checkNotNull(from, "VAppTemplate");
-      Envelope ovf = templateToEnvelope.apply(from);
-
-      ImageBuilder builder = new ImageBuilder();
-      builder.ids(from.getHref().toASCIIString());
-      builder.uri(from.getHref());
-      builder.name(from.getName());
-      if (from.getVDC() != null) {
-         builder.location(findLocationForResource.apply(from.getVDC()));
-      } else {
-         // otherwise, it could be in a public catalog, which is not assigned to a VDC
-      }
-      builder.description(from.getDescription() != null ? from.getDescription() : from.getName());
-      builder.operatingSystem(CIMOperatingSystem.toComputeOs(ovf));
-      builder.status(toPortableImageStatus.get(from.getStatus()));
-      return builder.build();
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VAppToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VAppToNodeMetadata.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VAppToNodeMetadata.java
deleted file mode 100644
index 0947c78..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VAppToNodeMetadata.java
+++ /dev/null
@@ -1,111 +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.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.not;
-import static com.google.common.base.Strings.isNullOrEmpty;
-import static com.google.common.collect.Iterables.filter;
-import static org.jclouds.compute.util.ComputeServiceUtils.addMetadataAndParseTagsFromCommaDelimitedValue;
-import static org.jclouds.compute.util.ComputeServiceUtils.groupFromMapOrName;
-import static org.jclouds.vcloud.compute.util.VCloudComputeUtils.getCredentialsFrom;
-import static org.jclouds.vcloud.compute.util.VCloudComputeUtils.getIpsFromVApp;
-import static org.jclouds.vcloud.compute.util.VCloudComputeUtils.toComputeOs;
-
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.domain.Credentials;
-import org.jclouds.logging.Logger;
-import org.jclouds.util.InetAddresses2.IsPrivateIPAddress;
-import org.jclouds.vcloud.domain.Status;
-import org.jclouds.vcloud.domain.VApp;
-
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.common.collect.ImmutableMap;
-
-@Singleton
-public class VAppToNodeMetadata implements Function<VApp, NodeMetadata> {
-   @Resource
-   protected static Logger logger = Logger.NULL;
-
-   protected final FindLocationForResource findLocationForResourceInVDC;
-   protected final Function<VApp, Hardware> hardwareForVApp;
-   protected final Map<Status, NodeMetadata.Status> vAppStatusToNodeStatus;
-   protected final Map<String, Credentials> credentialStore;
-   protected final GroupNamingConvention nodeNamingConvention;
-
-   @Inject
-   protected VAppToNodeMetadata(Map<Status, NodeMetadata.Status> vAppStatusToNodeStatus, Map<String, Credentials> credentialStore,
-                                FindLocationForResource findLocationForResourceInVDC, Function<VApp, Hardware> hardwareForVApp,
-                                GroupNamingConvention.Factory namingConvention) {
-      this.nodeNamingConvention = checkNotNull(namingConvention, "namingConvention").createWithoutPrefix();
-      this.hardwareForVApp = checkNotNull(hardwareForVApp, "hardwareForVApp");
-      this.findLocationForResourceInVDC = checkNotNull(findLocationForResourceInVDC, "findLocationForResourceInVDC");
-      this.credentialStore = checkNotNull(credentialStore, "credentialStore");
-      this.vAppStatusToNodeStatus = checkNotNull(vAppStatusToNodeStatus, "vAppStatusToNodeStatus");
-   }
-
-   public NodeMetadata apply(VApp from) {
-      NodeMetadataBuilder builder = new NodeMetadataBuilder();
-      builder.ids(from.getHref().toASCIIString());
-      builder.uri(from.getHref());
-      builder.name(from.getName());
-      String groupName = "";
-      Map<String, String> metadataMap;
-
-      if (!isNullOrEmpty(from.getDescription())
-         && from.getDescription().indexOf('=') != -1
-         && from.getDescription().indexOf('\n') != -1) {
-         try {
-            metadataMap = Splitter.on('\n').withKeyValueSeparator("=").split(from.getDescription());
-
-            addMetadataAndParseTagsFromCommaDelimitedValue(builder, metadataMap);
-         } catch (IllegalArgumentException iae) {
-            // no op
-            metadataMap = ImmutableMap.of();
-         }
-      } else {
-         metadataMap = ImmutableMap.of();
-      }
-      builder.hostname(from.getName());
-      builder.location(findLocationForResourceInVDC.apply(from.getVDC()));
-      builder.group(groupFromMapOrName(metadataMap, from.getName(), nodeNamingConvention));
-      builder.operatingSystem(toComputeOs(from, null));
-      builder.hardware(hardwareForVApp.apply(from));
-      builder.status(vAppStatusToNodeStatus.get(from.getStatus()));
-      Set<String> addresses = getIpsFromVApp(from);
-      builder.publicAddresses(filter(addresses, not(IsPrivateIPAddress.INSTANCE)));
-      builder.privateAddresses(filter(addresses, IsPrivateIPAddress.INSTANCE));
-
-      // normally, we don't affect the credential store when reading vApps.
-      // However, login user, etc, is actually in the metadata, so lets see
-      Credentials fromApi = getCredentialsFrom(from);
-      if (fromApi != null && !credentialStore.containsKey("node#" + from.getHref().toASCIIString()))
-         credentialStore.put("node#" + from.getHref().toASCIIString(), fromApi);
-      return builder.build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/6f974f34/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VCloudHardwareBuilderFromResourceAllocations.java
----------------------------------------------------------------------
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VCloudHardwareBuilderFromResourceAllocations.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VCloudHardwareBuilderFromResourceAllocations.java
deleted file mode 100644
index 2f3bd42..0000000
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/compute/functions/VCloudHardwareBuilderFromResourceAllocations.java
+++ /dev/null
@@ -1,40 +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.compute.functions;
-
-import javax.inject.Singleton;
-
-import org.jclouds.cim.ResourceAllocationSettingData;
-import org.jclouds.cim.functions.HardwareBuilderFromResourceAllocations;
-import org.jclouds.compute.domain.Volume;
-import org.jclouds.compute.domain.internal.VolumeImpl;
-import org.jclouds.vcloud.domain.ovf.VCloudHardDisk;
-
-@Singleton
-public class VCloudHardwareBuilderFromResourceAllocations extends HardwareBuilderFromResourceAllocations {
-   @Override
-   public Volume apply(ResourceAllocationSettingData from) {
-      if (from instanceof VCloudHardDisk) {
-         VCloudHardDisk vDisk = VCloudHardDisk.class.cast(from);
-         return new VolumeImpl(from.getAddressOnParent() + "", Volume.Type.LOCAL, vDisk.getCapacity() / 1024f, null,
-                  "0".equals(from.getAddressOnParent()), true);
-      } else {
-         return super.apply(from);
-      }
-
-   }
-}