in src/main/java/com/aliyun/oss/internal/ResponseParsers.java [1444:1550]
public static VersionListing parseListVersions(InputStream responseBody) throws ResponseParseException {
try {
Element root = getXmlRootElement(responseBody);
boolean shouldSDKDecode = false;
VersionListing versionListing = new VersionListing();
versionListing.setBucketName(root.getChildText("Name"));
versionListing.setMaxKeys(Integer.valueOf(root.getChildText("MaxKeys")));
versionListing.setTruncated(Boolean.valueOf(root.getChildText("IsTruncated")));
if (root.getChild("EncodingType") != null) {
String encodingType = root.getChildText("EncodingType");
if (encodingType.equals(OSSConstants.URL_ENCODING)) {
shouldSDKDecode = true;
versionListing.setEncodingType(null);
} else {
versionListing.setEncodingType(isNullOrEmpty(encodingType) ? null : encodingType);
}
}
if (root.getChild("Prefix") != null) {
String prefix = root.getChildText("Prefix");
versionListing.setPrefix(isNullOrEmpty(prefix) ? null : decodeIfSpecified(prefix, shouldSDKDecode));
}
if (root.getChild("KeyMarker") != null) {
String marker = root.getChildText("KeyMarker");
versionListing.setKeyMarker(isNullOrEmpty(marker) ? null : decodeIfSpecified(marker, shouldSDKDecode));
}
if (root.getChild("VersionIdMarker") != null) {
String marker = root.getChildText("VersionIdMarker");
versionListing.setVersionIdMarker(isNullOrEmpty(marker) ? null : marker);
}
if (root.getChild("Delimiter") != null) {
String delimiter = root.getChildText("Delimiter");
versionListing
.setDelimiter(isNullOrEmpty(delimiter) ? null : decodeIfSpecified(delimiter, shouldSDKDecode));
}
if (root.getChild("NextKeyMarker") != null) {
String nextMarker = root.getChildText("NextKeyMarker");
versionListing.setNextKeyMarker(
isNullOrEmpty(nextMarker) ? null : decodeIfSpecified(nextMarker, shouldSDKDecode));
}
if (root.getChild("NextVersionIdMarker") != null) {
String nextMarker = root.getChildText("NextVersionIdMarker");
versionListing.setNextVersionIdMarker(isNullOrEmpty(nextMarker) ? null : nextMarker);
}
List<Element> objectSummaryElems = root.getChildren("Version");
for (Element elem : objectSummaryElems) {
OSSVersionSummary ossVersionSummary = new OSSVersionSummary();
ossVersionSummary.setKey(decodeIfSpecified(elem.getChildText("Key"), shouldSDKDecode));
ossVersionSummary.setVersionId(elem.getChildText("VersionId"));
ossVersionSummary.setIsLatest("true".equals(elem.getChildText("IsLatest")));
ossVersionSummary.setETag(trimQuotes(elem.getChildText("ETag")));
ossVersionSummary.setLastModified(DateUtil.parseIso8601Date(elem.getChildText("LastModified")));
ossVersionSummary.setSize(Long.valueOf(elem.getChildText("Size")));
ossVersionSummary.setStorageClass(elem.getChildText("StorageClass"));
ossVersionSummary.setRestoreInfo(elem.getChildText("RestoreInfo"));
ossVersionSummary.setBucketName(versionListing.getBucketName());
ossVersionSummary.setIsDeleteMarker(false);
String id = elem.getChild("Owner").getChildText("ID");
String displayName = elem.getChild("Owner").getChildText("DisplayName");
ossVersionSummary.setOwner(new Owner(id, displayName));
versionListing.getVersionSummaries().add(ossVersionSummary);
}
List<Element> delSummaryElems = root.getChildren("DeleteMarker");
for (Element elem : delSummaryElems) {
OSSVersionSummary ossVersionSummary = new OSSVersionSummary();
ossVersionSummary.setKey(decodeIfSpecified(elem.getChildText("Key"), shouldSDKDecode));
ossVersionSummary.setVersionId(elem.getChildText("VersionId"));
ossVersionSummary.setIsLatest("true".equals(elem.getChildText("IsLatest")));
ossVersionSummary.setLastModified(DateUtil.parseIso8601Date(elem.getChildText("LastModified")));
ossVersionSummary.setBucketName(versionListing.getBucketName());
ossVersionSummary.setIsDeleteMarker(true);
String id = elem.getChild("Owner").getChildText("ID");
String displayName = elem.getChild("Owner").getChildText("DisplayName");
ossVersionSummary.setOwner(new Owner(id, displayName));
versionListing.getVersionSummaries().add(ossVersionSummary);
}
List<Element> commonPrefixesElems = root.getChildren("CommonPrefixes");
for (Element elem : commonPrefixesElems) {
String prefix = elem.getChildText("Prefix");
if (!isNullOrEmpty(prefix)) {
versionListing.getCommonPrefixes().add(decodeIfSpecified(prefix, shouldSDKDecode));
}
}
return versionListing;
} catch (JDOMParseException e) {
throw new ResponseParseException(e.getPartialDocument() + ": " + e.getMessage(), e);
} catch (Exception e) {
throw new ResponseParseException(e.getMessage(), e);
}
}