diff --git a/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/SDNConnection.java b/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/SDNConnection.java
index 0b693afad2..f3117d534a 100644
--- a/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/SDNConnection.java
+++ b/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/SDNConnection.java
@@ -24,11 +24,11 @@
package org.jclouds.nirvanix.sdn;
import java.net.URI;
+import java.util.Map;
import java.util.concurrent.Future;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
@@ -50,8 +50,6 @@ import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.ResponseParser;
import org.jclouds.rest.annotations.SkipEncoding;
-import com.google.common.collect.Multimap;
-
/**
* Provides access to Nirvanix SDN resources via their REST API.
*
@@ -85,11 +83,11 @@ public interface SDNConnection {
/**
* The SetMetadata method is used to set specified metadata for a file or folder.
*/
- @PUT
+ @GET
@Path("/ws/Metadata/SetMetadata.ashx")
@QueryParams(keys = SDNQueryParams.PATH, values = "{path}")
Future setMetadata(@PathParam("path") String path,
- @BinderParam(BindMetadataToQueryParams.class) Multimap metadata);
+ @BinderParam(BindMetadataToQueryParams.class) Map metadata);
/**
* The GetMetadata method is used to retrieve all metadata from a file or folder.
diff --git a/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/binders/BindMetadataToQueryParams.java b/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/binders/BindMetadataToQueryParams.java
index e8323029eb..46428b52f6 100644
--- a/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/binders/BindMetadataToQueryParams.java
+++ b/nirvanix/sdn/core/src/main/java/org/jclouds/nirvanix/sdn/binders/BindMetadataToQueryParams.java
@@ -4,6 +4,7 @@ import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
import org.jclouds.http.HttpRequest;
@@ -11,22 +12,21 @@ import org.jclouds.rest.Binder;
import org.jclouds.rest.internal.GeneratedHttpRequest;
import com.google.common.collect.Lists;
-import com.google.common.collect.Multimap;
public class BindMetadataToQueryParams implements Binder {
@SuppressWarnings("unchecked")
public void bindToRequest(HttpRequest request, Object input) {
checkArgument(checkNotNull(request, "input") instanceof GeneratedHttpRequest,
- "this decorator is only valid for GeneratedHttpRequests!");
- checkArgument(checkNotNull(input, "input") instanceof Multimap,
- "this decorator is only valid for Multimaps!");
- Multimap userMetadata = (Multimap) input;
+ "this binder is only valid for GeneratedHttpRequests!");
+ checkArgument(checkNotNull(input, "input") instanceof Map,
+ "this binder is only valid for Maps!");
+ Map userMetadata = (Map) input;
List metadata = Lists.newArrayList();
- for (Entry entry : userMetadata.entries()) {
+ for (Entry entry : userMetadata.entrySet()) {
metadata.add(String.format("%s:%s", entry.getKey().toLowerCase(), entry.getValue()));
}
- ((GeneratedHttpRequest)request).replaceQueryParam("metadata", metadata.toArray());
+ ((GeneratedHttpRequest) request).replaceQueryParam("metadata", metadata.toArray());
}
}
diff --git a/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionLiveTest.java b/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionLiveTest.java
index f4e938f482..278f5b45bc 100644
--- a/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionLiveTest.java
+++ b/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionLiveTest.java
@@ -1,9 +1,11 @@
package org.jclouds.nirvanix.sdn;
import static com.google.common.base.Preconditions.checkNotNull;
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
import java.net.URI;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -16,6 +18,8 @@ import org.jclouds.nirvanix.sdn.domain.UploadInfo;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;
+import com.google.common.collect.ImmutableMap;
+
/**
* Tests behavior of {@code SDNConnection}
*
@@ -59,8 +63,8 @@ public class SDNConnectionLiveTest {
String content = connection.getFile(containerName + "/test.txt").get(30, TimeUnit.SECONDS);
assertEquals(content, "value");
- // Multimap metadata = ImmutableMultimap.of("chef", "sushi", "foo", "bar");
- // connection.setMetadata(containerName+"/test.txt", metadata).get(30, TimeUnit.SECONDS);
+ Map metadata = ImmutableMap.of("chef", "sushi", "foo", "bar");
+ connection.setMetadata(containerName+"/test.txt", metadata).get(30, TimeUnit.SECONDS);
}
}
diff --git a/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionTest.java b/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionTest.java
index 4d7db7e45c..826ff0f6d1 100644
--- a/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionTest.java
+++ b/nirvanix/sdn/core/src/test/java/org/jclouds/nirvanix/sdn/SDNConnectionTest.java
@@ -30,6 +30,7 @@ import java.io.InputStream;
import java.lang.reflect.Method;
import java.net.URI;
import java.util.Collections;
+import java.util.Map;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.core.HttpHeaders;
@@ -56,8 +57,7 @@ import org.jclouds.util.Utils;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
-import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
+import com.google.common.collect.ImmutableMap;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -117,18 +117,16 @@ public class SDNConnectionTest {
}
public void testSetMetadata() throws SecurityException, NoSuchMethodException, IOException {
- Method method = SDNConnection.class.getMethod("setMetadata", String.class, Multimap.class);
+ Method method = SDNConnection.class.getMethod("setMetadata", String.class, Map.class);
GeneratedHttpRequest httpMethod = processor
.createRequest(method, new Object[] { "adriansmovies/sushi.avi",
- ImmutableMultimap.of("Chef", "Kawasaki") });
+ ImmutableMap.of("Chef", "Kawasaki") });
assertEquals(httpMethod.getEndpoint().getHost(), "localhost");
assertEquals(httpMethod.getEndpoint().getPath(), "/ws/Metadata/SetMetadata.ashx");
assertEquals(httpMethod.getEndpoint().getQuery(),
"output=json&path=adriansmovies/sushi.avi&metadata=chef:Kawasaki");
- assertEquals(httpMethod.getMethod(), HttpMethod.PUT);
- assertEquals(httpMethod.getHeaders().size(), 1);
- assertEquals(httpMethod.getHeaders().get(HttpHeaders.CONTENT_LENGTH), Collections
- .singletonList(0 + ""));
+ assertEquals(httpMethod.getMethod(), HttpMethod.GET);
+ assertEquals(httpMethod.getHeaders().size(), 0);
assertEquals(httpMethod.getEntity(), null);
assertEquals(processor.createResponseParser(method, httpMethod).getClass(),
ReturnVoidIf2xx.class);