diff --git a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/media/implementation/VersionHeadersFilter.java b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/media/implementation/VersionHeadersFilter.java index 9b69c79942969..6dea13fc4f30d 100644 --- a/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/media/implementation/VersionHeadersFilter.java +++ b/microsoft-azure-api/src/main/java/com/microsoft/windowsazure/services/media/implementation/VersionHeadersFilter.java @@ -17,23 +17,23 @@ import javax.ws.rs.core.MultivaluedMap; +import com.microsoft.windowsazure.services.core.IdempotentClientFilter; import com.sun.jersey.api.client.ClientHandlerException; import com.sun.jersey.api.client.ClientRequest; import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.filter.ClientFilter; /** * A small filter that adds the required Media services/OData 3 * version headers to the request as it goes through. * */ -public class VersionHeadersFilter extends ClientFilter { +public class VersionHeadersFilter extends IdempotentClientFilter { /* (non-Javadoc) - * @see com.sun.jersey.api.client.filter.ClientFilter#handle(com.sun.jersey.api.client.ClientRequest) + * @see com.microsoft.windowsazure.services.core.IdempotentClientFilter#doHandle(com.sun.jersey.api.client.ClientRequest) */ @Override - public ClientResponse handle(ClientRequest cr) throws ClientHandlerException { + public ClientResponse doHandle(ClientRequest cr) throws ClientHandlerException { MultivaluedMap headers = cr.getHeaders(); headers.add("DataServiceVersion", "3.0"); headers.add("MaxDataServiceVersion", "3.0"); diff --git a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/media/AccessPolicyIntegrationTest.java b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/media/AccessPolicyIntegrationTest.java index e0e11c0b55881..39cab7588d2fd 100644 --- a/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/media/AccessPolicyIntegrationTest.java +++ b/microsoft-azure-api/src/test/java/com/microsoft/windowsazure/services/media/AccessPolicyIntegrationTest.java @@ -21,9 +21,10 @@ import java.util.EnumSet; import java.util.List; -import org.junit.Before; import org.junit.Test; +import com.microsoft.windowsazure.services.core.ExponentialRetryPolicy; +import com.microsoft.windowsazure.services.core.RetryPolicyFilter; import com.microsoft.windowsazure.services.core.ServiceException; import com.microsoft.windowsazure.services.media.models.AccessPolicyInfo; import com.microsoft.windowsazure.services.media.models.AccessPolicyPermission; @@ -59,11 +60,6 @@ private void verifyPolicyProperties(String message, String testName, double dura assertEquals(message + " Created & LastModified", policy.getCreated(), policy.getLastModified()); } - @Before - public void setupInstance() throws Exception { - service = MediaService.create(config); - } - @Test public void canCreateAccessPolicy() throws Exception { String testName = testPolicyPrefix + "CanCreate"; @@ -200,4 +196,17 @@ public void canDeleteAccessPolicyByNonexistId() throws Exception { expectedException.expect(new ServiceExceptionMatcher(404)); service.deleteAccessPolicy(validButNonexistAccessPolicyId); } + + @Test + public void canUploadBlockBlobWithExplicitRetry() throws Exception { + String name = testPolicyPrefix + "canUploadBlockBlobWithExplicitRetry"; + double duration = 1; + EnumSet write = EnumSet.of(AccessPolicyPermission.WRITE); + service.createAccessPolicy(name + "1", duration, write); + + ExponentialRetryPolicy forceRetryPolicy = new ExponentialRetryPolicy(1, 1, new int[] { 201 }); + MediaContract forceRetryService = service.withFilter(new RetryPolicyFilter(forceRetryPolicy)); + + forceRetryService.createAccessPolicy(name + "2", duration, write); + } }