private void setAcl(String bucketName, String key, String versionId, AccessControlList acl) {
Request<GenericBucketRequest> request = createRequest(bucketName, key, new GenericBucketRequest(bucketName), HttpMethodName.PUT);
request.addParameter("acl", null);
if (versionId != null) request.addParameter("versionId", versionId);
byte[] aclAsXml = new AclXmlFactory().convertToXmlByteArray(acl);
request.addHeader("Content-Type", "text/plain");
request.addHeader("Content-Length", String.valueOf(aclAsXml.length));
request.setContent(new ByteArrayInputStream(aclAsXml));
invoke(request, voidResponseHandler, bucketName, key);