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);