Issue 622:Unable to clone machine of Terremark VCloud Express
diff --git a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java
index b5d83ca..41cdeb8 100644
--- a/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java
+++ b/apis/vcloud/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java
@@ -42,7 +42,7 @@
    @Inject
    public BindCloneVAppParamsToXmlPayload(BindToStringPayload stringBinder,
             @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) {
-      super(stringBinder, schema, schema);
+      super(stringBinder, ns, schema);
    }
 
    @Override
diff --git a/apis/vcloud/src/test/resources/copyVApp-default.xml b/apis/vcloud/src/test/resources/copyVApp-default.xml
index e1579ca..0e8ba8d 100644
--- a/apis/vcloud/src/test/resources/copyVApp-default.xml
+++ b/apis/vcloud/src/test/resources/copyVApp-default.xml
@@ -1 +1 @@
-<CloneVAppParams xmlns="http://vcloud.safesecureweb.com/ns/vcloud.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="false" name="my-vapp" powerOn="false" xsi:schemaLocation="http://vcloud.safesecureweb.com/ns/vcloud.xsd http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/4181" type="application/vnd.vmware.vcloud.vApp+xml"/></CloneVAppParams>
\ No newline at end of file
+<CloneVAppParams xmlns="http://www.vmware.com/vcloud/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="false" name="my-vapp" powerOn="false" xsi:schemaLocation="http://www.vmware.com/vcloud/v1 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/4181" type="application/vnd.vmware.vcloud.vApp+xml"/></CloneVAppParams>
\ No newline at end of file
diff --git a/apis/vcloud/src/test/resources/copyVApp.xml b/apis/vcloud/src/test/resources/copyVApp.xml
index 11dfaae..b6cd733 100644
--- a/apis/vcloud/src/test/resources/copyVApp.xml
+++ b/apis/vcloud/src/test/resources/copyVApp.xml
@@ -1 +1 @@
-<CloneVAppParams xmlns="http://vcloud.safesecureweb.com/ns/vcloud.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="true" name="new-linux-server" powerOn="true" xsi:schemaLocation="http://vcloud.safesecureweb.com/ns/vcloud.xsd http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Description>The description of the new vApp</Description><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/201" type="application/vnd.vmware.vcloud.vApp+xml"/></CloneVAppParams>
\ No newline at end of file
+<CloneVAppParams xmlns="http://www.vmware.com/vcloud/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="true" name="new-linux-server" powerOn="true" xsi:schemaLocation="http://www.vmware.com/vcloud/v1 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Description>The description of the new vApp</Description><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/201" type="application/vnd.vmware.vcloud.vApp+xml"/></CloneVAppParams>
\ No newline at end of file
diff --git a/apis/vcloud/src/test/resources/moveVApp.xml b/apis/vcloud/src/test/resources/moveVApp.xml
index cba62d9..919d136 100644
--- a/apis/vcloud/src/test/resources/moveVApp.xml
+++ b/apis/vcloud/src/test/resources/moveVApp.xml
@@ -1 +1 @@
-<CloneVAppParams xmlns="http://vcloud.safesecureweb.com/ns/vcloud.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="true" name="new-linux-server" powerOn="true" xsi:schemaLocation="http://vcloud.safesecureweb.com/ns/vcloud.xsd http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Description>The description of the new vApp</Description><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/201" type="application/vnd.vmware.vcloud.vApp+xml"/><IsSourceDelete>true</IsSourceDelete></CloneVAppParams>
\ No newline at end of file
+<CloneVAppParams xmlns="http://www.vmware.com/vcloud/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" deploy="true" name="new-linux-server" powerOn="true" xsi:schemaLocation="http://www.vmware.com/vcloud/v1 http://vcloud.safesecureweb.com/ns/vcloud.xsd"><Description>The description of the new vApp</Description><Source href="https://vcenterprise.bluelock.com/api/v1.0/vapp/201" type="application/vnd.vmware.vcloud.vApp+xml"/><IsSourceDelete>true</IsSourceDelete></CloneVAppParams>
\ No newline at end of file
diff --git a/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressAsyncClient.java b/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressAsyncClient.java
index 68048ec..bbe3120 100644
--- a/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressAsyncClient.java
+++ b/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/VCloudExpressAsyncClient.java
@@ -44,7 +44,7 @@
 import org.jclouds.rest.annotations.ResponseParser;
 import org.jclouds.rest.annotations.XMLResponseParser;
 import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
-import org.jclouds.vcloud.binders.BindCloneVAppParamsToXmlPayload;
+import org.jclouds.vcloud.binders.BindCloneVCloudExpressVAppParamsToXmlPayload;
 import org.jclouds.vcloud.binders.BindInstantiateVCloudExpressVAppTemplateParamsToXmlPayload;
 import org.jclouds.vcloud.domain.Catalog;
 import org.jclouds.vcloud.domain.Task;
@@ -163,7 +163,7 @@
    @Produces("application/vnd.vmware.vcloud.cloneVAppParams+xml")
    @Consumes(TASK_XML)
    @XMLResponseParser(TaskHandler.class)
-   @MapBinder(BindCloneVAppParamsToXmlPayload.class)
+   @MapBinder(BindCloneVCloudExpressVAppParamsToXmlPayload.class)
    ListenableFuture<? extends Task> cloneVAppInVDC(@EndpointParam URI vdc, @PayloadParam("vApp") URI toClone,
             @PayloadParam("newName") @ParamValidators(DnsNameValidator.class) String newName,
             CloneVAppOptions... options);
diff --git a/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java b/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayload.java
similarity index 94%
rename from apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java
rename to apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayload.java
index 22cfb4a..2312dd9 100644
--- a/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java
+++ b/apis/vcloudexpress/src/main/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayload.java
@@ -49,14 +49,14 @@
  * 
  */
 @Singleton
-public class BindCloneVAppParamsToXmlPayload implements MapBinder {
+public class BindCloneVCloudExpressVAppParamsToXmlPayload implements MapBinder {
 
    protected final String ns;
    protected final String schema;
    private final BindToStringPayload stringBinder;
 
    @Inject
-   public BindCloneVAppParamsToXmlPayload(BindToStringPayload stringBinder,
+   public BindCloneVCloudExpressVAppParamsToXmlPayload(BindToStringPayload stringBinder,
          @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) {
       this.ns = ns;
       this.schema = schema;
@@ -93,7 +93,7 @@
       XMLBuilder rootBuilder = buildRoot(newName, options.isDeploy(), options.isPowerOn());
       if (options.getDescription() != null)
          rootBuilder.e("Description").text(options.getDescription());
-      rootBuilder.e("VApp").a("href", vApp).a("type", VCloudMediaType.VAPP_XML);
+      rootBuilder.e("VApp").a("xmlns", ns).a("href", vApp).a("type", VCloudMediaType.VAPP_XML);
       Properties outputProperties = new Properties();
       outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
       return rootBuilder.asString(outputProperties);
diff --git a/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayloadTest.java b/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayloadTest.java
similarity index 91%
rename from apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayloadTest.java
rename to apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayloadTest.java
index f90e4fc..6b94fb5 100644
--- a/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayloadTest.java
+++ b/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/BindCloneVCloudExpressVAppParamsToXmlPayloadTest.java
@@ -47,7 +47,7 @@
  * @author Adrian Cole
  */
 @Test(groups = "unit")
-public class BindCloneVAppParamsToXmlPayloadTest {
+public class BindCloneVCloudExpressVAppParamsToXmlPayloadTest {
    Injector injector = Guice.createInjector(new AbstractModule() {
 
       @Override
@@ -70,7 +70,7 @@
       request.setPayload(expected);
       replay(request);
 
-      BindCloneVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVAppParamsToXmlPayload.class);
+      BindCloneVCloudExpressVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVCloudExpressVAppParamsToXmlPayload.class);
 
       Map<String, String> map = Maps.newHashMap();
       map.put("newName", "new-linux-server");
@@ -88,7 +88,7 @@
       request.setPayload(expected);
       replay(request);
 
-      BindCloneVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVAppParamsToXmlPayload.class);
+      BindCloneVCloudExpressVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVCloudExpressVAppParamsToXmlPayload.class);
 
       Map<String, String> map = Maps.newHashMap();
       map.put("newName", "my-vapp");
diff --git a/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/VCloudExpressBindCloneVAppParamsToXmlPayloadTest.java b/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/VCloudExpressBindCloneVAppParamsToXmlPayloadTest.java
deleted file mode 100644
index 0d3c0ea..0000000
--- a/apis/vcloudexpress/src/test/java/org/jclouds/vcloud/binders/VCloudExpressBindCloneVAppParamsToXmlPayloadTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- *
- * Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
- *
- * ====================================================================
- * Licensed 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 static org.easymock.EasyMock.expect;
-import static org.easymock.classextension.EasyMock.createMock;
-import static org.easymock.classextension.EasyMock.replay;
-import static org.easymock.classextension.EasyMock.verify;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Map;
-import java.util.Properties;
-
-import org.jclouds.rest.internal.GeneratedHttpRequest;
-import org.jclouds.util.Strings2;
-import org.jclouds.vcloud.VCloudExpressPropertiesBuilder;
-import org.jclouds.vcloud.options.CloneVAppOptions;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Maps;
-import com.google.inject.AbstractModule;
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.name.Names;
-
-/**
- * Tests behavior of {@code BindCloneVAppParamsToXmlPayload}
- * 
- * @author Adrian Cole
- */
-@Test(groups = "unit")
-public class VCloudExpressBindCloneVAppParamsToXmlPayloadTest {
-   Injector injector = Guice.createInjector(new AbstractModule() {
-
-      @Override
-      protected void configure() {
-         Properties props = new Properties();
-         Names.bindProperties(binder(), checkNotNull(new VCloudExpressPropertiesBuilder(props).build(), "properties"));
-      }
-   });
-
-   public void testWithDescriptionDeployOn() throws IOException {
-      String expected = Strings2.toStringAndClose(getClass().getResourceAsStream("/cloneVApp.xml"));
-
-      CloneVAppOptions options = new CloneVAppOptions().deploy().powerOn().withDescription(
-               "The description of the new vApp");
-      GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
-      expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
-      expect(request.getArgs()).andReturn(ImmutableList.<Object>of( options)).atLeastOnce();
-      request.setPayload(expected);
-      replay(request);
-
-      BindCloneVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVAppParamsToXmlPayload.class);
-
-      Map<String, String> map = Maps.newHashMap();
-      map.put("newName", "new-linux-server");
-      map.put("vApp", "https://vcloud.safesecureweb.com/api/v0.8/vapp/201");
-      binder.bindToRequest(request, map);
-      verify(request);
-   }
-
-   public void testDefault() throws IOException {
-      String expected = Strings2.toStringAndClose(getClass().getResourceAsStream("/cloneVApp-default.xml"));
-
-      GeneratedHttpRequest<?> request = createMock(GeneratedHttpRequest.class);
-      expect(request.getEndpoint()).andReturn(URI.create("http://localhost/key")).anyTimes();
-      expect(request.getArgs()).andReturn(ImmutableList.<Object>of()).atLeastOnce();
-      request.setPayload(expected);
-      replay(request);
-
-      BindCloneVAppParamsToXmlPayload binder = injector.getInstance(BindCloneVAppParamsToXmlPayload.class);
-
-      Map<String, String> map = Maps.newHashMap();
-      map.put("newName", "my-vapp");
-      map.put("vApp", "https://vcloud.safesecureweb.com/api/v0.8/vapp/4181");
-      binder.bindToRequest(request, map);
-      verify(request);
-   }
-}
diff --git a/common/trmk/src/main/java/org/jclouds/vcloud/terremark/binders/TerremarkBindCloneVAppParamsToXmlPayload.java b/common/trmk/src/main/java/org/jclouds/vcloud/terremark/binders/TerremarkBindCloneVAppParamsToXmlPayload.java
index 3410387..b611e67 100644
--- a/common/trmk/src/main/java/org/jclouds/vcloud/terremark/binders/TerremarkBindCloneVAppParamsToXmlPayload.java
+++ b/common/trmk/src/main/java/org/jclouds/vcloud/terremark/binders/TerremarkBindCloneVAppParamsToXmlPayload.java
@@ -27,7 +27,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.jclouds.rest.binders.BindToStringPayload;
-import org.jclouds.vcloud.binders.BindCloneVAppParamsToXmlPayload;
+import org.jclouds.vcloud.binders.BindCloneVCloudExpressVAppParamsToXmlPayload;
 
 import com.google.inject.Inject;
 import com.jamesmurty.utils.XMLBuilder;
@@ -38,7 +38,7 @@
  * 
  */
 @Singleton
-public class TerremarkBindCloneVAppParamsToXmlPayload extends BindCloneVAppParamsToXmlPayload {
+public class TerremarkBindCloneVAppParamsToXmlPayload extends BindCloneVCloudExpressVAppParamsToXmlPayload {
 
    @Inject
    public TerremarkBindCloneVAppParamsToXmlPayload(BindToStringPayload stringBinder,