@VisibleForTesting void parseLastModifiedOrThrowException( HttpResponse from, MutableContainerPropertiesWithMetadata metadata) throws HttpException { String lastModified = from.getFirstHeaderOrNull(HttpHeaders.LAST_MODIFIED); if (lastModified == null) throw new HttpException( HttpHeaders.LAST_MODIFIED + " header not present in response: " + from); metadata.setLastModified(dateParser.rfc822DateParse(lastModified)); if (metadata.getLastModified() == null) throw new HttpException( "could not parse: " + HttpHeaders.LAST_MODIFIED + ": " + lastModified); }
public void endElement(String uri, String name, String qName) { if (inMetadata && !qName.equals("Metadata")) { currentMetadata.put(qName, currentText.toString().trim()); } else if (qName.equals("Metadata")) { inMetadata = false; } else if (qName.equals("MaxResults")) { maxResults = Integer.parseInt(currentText.toString().trim()); } else if (qName.equals("Marker")) { marker = currentText.toString().trim(); marker = (marker.equals("")) ? null : marker; } else if (qName.equals("Prefix")) { prefix = currentText.toString().trim(); prefix = (prefix.equals("")) ? null : prefix; } else if (qName.equals("Delimiter")) { delimiter = currentText.toString().trim(); delimiter = (delimiter.equals("")) ? null : delimiter; } else if (qName.equals("NextMarker")) { nextMarker = currentText.toString().trim(); nextMarker = (nextMarker.equals("")) ? null : nextMarker; } else if (qName.equals("BlobType")) { currentBlobType = BlobType.fromValue(currentText.toString().trim()); } else if (qName.equals("LeaseStatus")) { currentLeaseStatus = LeaseStatus.fromValue(currentText.toString().trim()); } else if (qName.equals("Blob")) { BlobProperties md = new BlobPropertiesImpl( currentBlobType, currentName, containerUrl.getPath().replace("/", ""), currentUrl, currentLastModified, currentETag, currentSize, currentContentType, currentContentMD5, currentContentEncoding, currentContentLanguage, currentLeaseStatus, currentMetadata); blobMetadata.add(md); currentBlobType = null; currentName = null; currentUrl = null; currentLastModified = null; currentETag = null; currentSize = -1; currentContentType = null; currentContentEncoding = null; currentContentLanguage = null; currentContentMD5 = null; currentLeaseStatus = null; currentMetadata = Maps.newHashMap(); } else if (qName.equals("Url")) { currentUrl = HttpUtils.createUri(currentText.toString().trim()); } else if (qName.equals("Last-Modified")) { currentLastModified = dateParser.rfc822DateParse(currentText.toString().trim()); } else if (qName.equals("Etag")) { currentETag = currentText.toString().trim(); } else if (qName.equals("Name")) { if (inBlob) currentName = currentText.toString().trim(); else if (inBlobPrefix) blobPrefixes.add(currentText.toString().trim()); } else if (qName.equals("Content-Length")) { currentSize = Long.parseLong(currentText.toString().trim()); } else if (qName.equals("Content-MD5")) { if (!currentText.toString().trim().equals("")) currentContentMD5 = CryptoStreams.base64(currentText.toString().trim()); } else if (qName.equals("Content-Type")) { currentContentType = currentText.toString().trim(); } else if (qName.equals("Content-Encoding")) { currentContentEncoding = currentText.toString().trim(); if (currentContentEncoding.equals("")) currentContentEncoding = null; } else if (qName.equals("Content-Language")) { currentContentLanguage = currentText.toString().trim(); if (currentContentLanguage.equals("")) currentContentLanguage = null; } currentText = new StringBuilder(); }