Format LastModified without millisecond precision

Found via s3verify.
pull/176/merge
Andrew Gaul 2016-11-13 18:52:56 -08:00
rodzic 3188605ea7
commit 778002e7f5
1 zmienionych plików z 15 dodań i 9 usunięć

Wyświetl plik

@ -33,6 +33,7 @@ import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException; import java.security.InvalidKeyException;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -42,6 +43,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TimeZone;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -1194,8 +1196,7 @@ public class S3ProxyHandler {
Date lastModified = metadata.getLastModified(); Date lastModified = metadata.getLastModified();
if (lastModified != null) { if (lastModified != null) {
writeSimpleElement(xml, "LastModified", writeSimpleElement(xml, "LastModified",
blobStore.getContext().utils().date() formatDate(lastModified));
.iso8601DateFormat(lastModified));
} }
String eTag = metadata.getETag(); String eTag = metadata.getETag();
@ -1504,8 +1505,7 @@ public class S3ProxyHandler {
xml.writeDefaultNamespace(AWS_XMLNS); xml.writeDefaultNamespace(AWS_XMLNS);
writeSimpleElement(xml, "LastModified", writeSimpleElement(xml, "LastModified",
blobStore.getContext().utils().date() formatDate(blobMetadata.getLastModified()));
.iso8601DateFormat(blobMetadata.getLastModified()));
writeSimpleElement(xml, "ETag", maybeQuoteETag(eTag)); writeSimpleElement(xml, "ETag", maybeQuoteETag(eTag));
xml.writeEndElement(); xml.writeEndElement();
@ -1974,8 +1974,7 @@ public class S3ProxyHandler {
Date lastModified = null; // TODO: not part of MultipartPart Date lastModified = null; // TODO: not part of MultipartPart
if (lastModified != null) { if (lastModified != null) {
writeSimpleElement(xml, "LastModified", writeSimpleElement(xml, "LastModified",
blobStore.getContext().utils().date() formatDate(lastModified));
.iso8601DateFormat(lastModified));
} }
String eTag = part.partETag(); String eTag = part.partETag();
@ -2157,9 +2156,7 @@ public class S3ProxyHandler {
xml.writeStartElement("CopyObjectResult"); xml.writeStartElement("CopyObjectResult");
xml.writeDefaultNamespace(AWS_XMLNS); xml.writeDefaultNamespace(AWS_XMLNS);
writeSimpleElement(xml, "LastModified", writeSimpleElement(xml, "LastModified", formatDate(lastModified));
blobStore.getContext().utils().date()
.iso8601DateFormat(blobMetadata.getLastModified()));
if (eTag != null) { if (eTag != null) {
writeSimpleElement(xml, "ETag", maybeQuoteETag(eTag)); writeSimpleElement(xml, "ETag", maybeQuoteETag(eTag));
} }
@ -2364,6 +2361,15 @@ public class S3ProxyHandler {
} }
} }
// cannot call BlobStore.getContext().utils().date().iso8601DateFormatsince
// it has unwanted millisecond precision
private static String formatDate(Date date) {
SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss'Z'");
formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
return formatter.format(date);
}
protected final void sendSimpleErrorResponse( protected final void sendSimpleErrorResponse(
HttpServletRequest request, HttpServletResponse response, HttpServletRequest request, HttpServletResponse response,
S3ErrorCode code, String message, S3ErrorCode code, String message,