in src/main/java/com/aliyun/oss/internal/ResponseParsers.java [3451:3616]
public static List<LifecycleRule> parseGetBucketLifecycle(InputStream responseBody) throws ResponseParseException {
try {
Element root = getXmlRootElement(responseBody);
List<LifecycleRule> lifecycleRules = new ArrayList<LifecycleRule>();
List<Element> ruleElements = root.getChildren("Rule");
for (Element ruleElem : ruleElements) {
LifecycleRule rule = new LifecycleRule();
if (ruleElem.getChild("ID") != null) {
rule.setId(ruleElem.getChildText("ID"));
}
if (ruleElem.getChild("Prefix") != null) {
rule.setPrefix(ruleElem.getChildText("Prefix"));
}
if (ruleElem.getChild("AtimeBase") != null) {
rule.setaTimeBase(ruleElem.getChildText("AtimeBase"));
}
List<Element> tagElems = ruleElem.getChildren("Tag");
if (tagElems != null) {
for (Element tagElem : tagElems) {
String key = null;
String value = null;
if (tagElem.getChild("Key") != null) {
key = tagElem.getChildText("Key");
}
if (tagElem.getChild("Value") != null) {
value = tagElem.getChildText("Value");
}
rule.addTag(key, value);
}
}
Element filterElems = ruleElem.getChild("Filter");
if(filterElems != null){
LifecycleFilter lifecycleFilter = new LifecycleFilter();
if (filterElems.getChild("ObjectSizeGreaterThan") != null) {
lifecycleFilter.setObjectSizeGreaterThan(Long.valueOf(filterElems.getChildText("ObjectSizeGreaterThan")));
}
if (filterElems.getChild("ObjectSizeLessThan") != null) {
lifecycleFilter.setObjectSizeLessThan(Long.valueOf(filterElems.getChildText("ObjectSizeLessThan")));
}
List<LifecycleNot> notList = new ArrayList<LifecycleNot>();
for(Element notEle : filterElems.getChildren("Not")){
LifecycleNot lifecycleNot = new LifecycleNot();
lifecycleNot.setPrefix(notEle.getChildText("Prefix"));
if (notEle.getChild("Tag") != null) {
Tag tag = new Tag(notEle.getChild("Tag").getChildText("Key"), notEle.getChild("Tag").getChildText("Value"));
lifecycleNot.setTag(tag);
}
notList.add(lifecycleNot);
}
lifecycleFilter.setNotList(notList);
rule.setFilter(lifecycleFilter);
}
if (ruleElem.getChild("Status") != null) {
rule.setStatus(RuleStatus.valueOf(ruleElem.getChildText("Status")));
}
if (ruleElem.getChild("Expiration") != null) {
if (ruleElem.getChild("Expiration").getChild("Date") != null) {
Date expirationDate = DateUtil
.parseIso8601Date(ruleElem.getChild("Expiration").getChildText("Date"));
rule.setExpirationTime(expirationDate);
} else if (ruleElem.getChild("Expiration").getChild("Days") != null) {
rule.setExpirationDays(Integer.parseInt(ruleElem.getChild("Expiration").getChildText("Days")));
} else if (ruleElem.getChild("Expiration").getChild("CreatedBeforeDate") != null) {
Date createdBeforeDate = DateUtil
.parseIso8601Date(ruleElem.getChild("Expiration").getChildText("CreatedBeforeDate"));
rule.setCreatedBeforeDate(createdBeforeDate);
} else if (ruleElem.getChild("Expiration").getChild("ExpiredObjectDeleteMarker") != null) {
rule.setExpiredDeleteMarker(Boolean.valueOf(ruleElem.getChild("Expiration").getChildText("ExpiredObjectDeleteMarker")));
}
}
if (ruleElem.getChild("AbortMultipartUpload") != null) {
LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
if (ruleElem.getChild("AbortMultipartUpload").getChild("Days") != null) {
abortMultipartUpload.setExpirationDays(
Integer.parseInt(ruleElem.getChild("AbortMultipartUpload").getChildText("Days")));
} else {
Date createdBeforeDate = DateUtil.parseIso8601Date(
ruleElem.getChild("AbortMultipartUpload").getChildText("CreatedBeforeDate"));
abortMultipartUpload.setCreatedBeforeDate(createdBeforeDate);
}
rule.setAbortMultipartUpload(abortMultipartUpload);
}
List<Element> transitionElements = ruleElem.getChildren("Transition");
List<StorageTransition> storageTransitions = new ArrayList<StorageTransition>();
for (Element transitionElem : transitionElements) {
LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
if (transitionElem.getChild("Days") != null) {
storageTransition.setExpirationDays(Integer.parseInt(transitionElem.getChildText("Days")));
} else {
Date createdBeforeDate = DateUtil
.parseIso8601Date(transitionElem.getChildText("CreatedBeforeDate"));
storageTransition.setCreatedBeforeDate(createdBeforeDate);
}
if (transitionElem.getChild("StorageClass") != null) {
storageTransition
.setStorageClass(StorageClass.parse(transitionElem.getChildText("StorageClass")));
}
if (transitionElem.getChild("IsAccessTime") != null) {
storageTransition.setIsAccessTime(Boolean.valueOf(transitionElem.getChildText("IsAccessTime")));
}
if (transitionElem.getChild("ReturnToStdWhenVisit") != null) {
storageTransition.setReturnToStdWhenVisit(Boolean.valueOf(transitionElem.getChildText("ReturnToStdWhenVisit")));
}
if (transitionElem.getChild("AllowSmallFile") != null) {
storageTransition.setAllowSmallFile(Boolean.valueOf(transitionElem.getChildText("AllowSmallFile")));
}
storageTransitions.add(storageTransition);
}
rule.setStorageTransition(storageTransitions);
if (ruleElem.getChild("NoncurrentVersionExpiration") != null) {
NoncurrentVersionExpiration expiration = new NoncurrentVersionExpiration();
if (ruleElem.getChild("NoncurrentVersionExpiration").getChild("NoncurrentDays") != null) {
expiration.setNoncurrentDays(Integer.parseInt(ruleElem.getChild("NoncurrentVersionExpiration").getChildText("NoncurrentDays")));
rule.setNoncurrentVersionExpiration(expiration);
}
}
List<Element> versionTansitionElements = ruleElem.getChildren("NoncurrentVersionTransition");
List<NoncurrentVersionStorageTransition> noncurrentVersionTransitions = new ArrayList<NoncurrentVersionStorageTransition>();
for (Element transitionElem : versionTansitionElements) {
NoncurrentVersionStorageTransition transition = new NoncurrentVersionStorageTransition();
if (transitionElem.getChild("NoncurrentDays") != null) {
transition.setNoncurrentDays(Integer.parseInt(transitionElem.getChildText("NoncurrentDays")));
}
if (transitionElem.getChild("StorageClass") != null) {
transition.setStorageClass(StorageClass.parse(transitionElem.getChildText("StorageClass")));
}
if (transitionElem.getChild("IsAccessTime") != null) {
transition.setIsAccessTime(Boolean.valueOf(transitionElem.getChildText("IsAccessTime")));
}
if (transitionElem.getChild("ReturnToStdWhenVisit") != null) {
transition.setReturnToStdWhenVisit(Boolean.valueOf(transitionElem.getChildText("ReturnToStdWhenVisit")));
}
if (transitionElem.getChild("AllowSmallFile") != null) {
transition.setAllowSmallFile(Boolean.valueOf(transitionElem.getChildText("AllowSmallFile")));
}
noncurrentVersionTransitions.add(transition);
}
rule.setNoncurrentVersionStorageTransitions(noncurrentVersionTransitions);
lifecycleRules.add(rule);
}
return lifecycleRules;
} catch (JDOMParseException e) {
throw new ResponseParseException(e.getPartialDocument() + ": " + e.getMessage(), e);
} catch (Exception e) {
throw new ResponseParseException(e.getMessage(), e);
}
}