public FixedLengthInputStream marshall()

in src/main/java/com/aliyun/oss/common/parser/RequestMarshallers.java [537:673]


        public FixedLengthInputStream marshall(SetBucketLifecycleRequest request) {
            StringBuffer xmlBody = new StringBuffer();
            xmlBody.append("<LifecycleConfiguration>");
            for (LifecycleRule rule : request.getLifecycleRules()) {
                xmlBody.append("<Rule>");

                if (rule.getId() != null) {
                    xmlBody.append("<ID>" + rule.getId() + "</ID>");
                }

                if (rule.getPrefix() != null) {
                    xmlBody.append("<Prefix>" + rule.getPrefix() + "</Prefix>");
                } else {
                    xmlBody.append("<Prefix></Prefix>");
                }
                
                if (rule.hasTags()) {
                    for (Map.Entry<String, String> tag : rule.getTags().entrySet()) {
                        xmlBody.append("<Tag>");
                        xmlBody.append("<Key>" + tag.getKey() + "</Key>");
                        xmlBody.append("<Value>" + tag.getValue() + "</Value>");
                        xmlBody.append("</Tag>");
                    }
                }

                if(rule.getFilter() != null){
                    xmlBody.append("<Filter>");
                    if (rule.getFilter().getObjectSizeGreaterThan() != null) {
                        xmlBody.append("<ObjectSizeGreaterThan>").append(rule.getFilter().getObjectSizeGreaterThan()).append("</ObjectSizeGreaterThan>");
                    }
                    if (rule.getFilter().getObjectSizeLessThan() != null) {
                        xmlBody.append("<ObjectSizeLessThan>").append(rule.getFilter().getObjectSizeLessThan()).append("</ObjectSizeLessThan>");
                    }
                    for(LifecycleNot not : rule.getFilter().getNotList()){
                        xmlBody.append("<Not>");
                        xmlBody.append("<Prefix>" + not.getPrefix() + "</Prefix>");
                        if(not.getTag() != null){
                            xmlBody.append("<Tag>");
                            xmlBody.append("<Key>" + not.getTag().getKey() + "</Key>");
                            xmlBody.append("<Value>" + not.getTag().getValue() + "</Value>");
                            xmlBody.append("</Tag>");
                        }
                        xmlBody.append("</Not>");
                    }
                    xmlBody.append("</Filter>");
                }

                if (rule.getStatus() == RuleStatus.Enabled) {
                    xmlBody.append("<Status>Enabled</Status>");
                } else {
                    xmlBody.append("<Status>Disabled</Status>");
                }

                if (rule.getExpirationTime() != null) {
                    String formatDate = DateUtil.formatIso8601Date(rule.getExpirationTime());
                    xmlBody.append("<Expiration><Date>" + formatDate + "</Date></Expiration>");
                } else if (rule.getExpirationDays() != 0) {
                    xmlBody.append("<Expiration><Days>" + rule.getExpirationDays() + "</Days></Expiration>");
                } else if (rule.getCreatedBeforeDate() != null) {
                    String formatDate = DateUtil.formatIso8601Date(rule.getCreatedBeforeDate());
                    xmlBody.append(
                            "<Expiration><CreatedBeforeDate>" + formatDate + "</CreatedBeforeDate></Expiration>");
                } else if (rule.getExpiredDeleteMarker() != null) {
                    xmlBody.append("<Expiration><ExpiredObjectDeleteMarker>" + rule.getExpiredDeleteMarker() +
                            "</ExpiredObjectDeleteMarker></Expiration>");
                }

                if (rule.hasAbortMultipartUpload()) {
                    AbortMultipartUpload abortMultipartUpload = rule.getAbortMultipartUpload();
                    if (abortMultipartUpload.getExpirationDays() != 0) {
                        xmlBody.append("<AbortMultipartUpload><Days>" + abortMultipartUpload.getExpirationDays()
                                + "</Days></AbortMultipartUpload>");
                    } else {
                        String formatDate = DateUtil.formatIso8601Date(abortMultipartUpload.getCreatedBeforeDate());
                        xmlBody.append("<AbortMultipartUpload><CreatedBeforeDate>" + formatDate
                                + "</CreatedBeforeDate></AbortMultipartUpload>");
                    }
                }

                if (rule.hasStorageTransition()) {
                    for (StorageTransition storageTransition : rule.getStorageTransition()) {
                        xmlBody.append("<Transition>");
                        if (storageTransition.hasExpirationDays()) {
                            xmlBody.append("<Days>" + storageTransition.getExpirationDays() + "</Days>");
                        } else if (storageTransition.hasCreatedBeforeDate()) {
                            String formatDate = DateUtil.formatIso8601Date(storageTransition.getCreatedBeforeDate());
                            xmlBody.append("<CreatedBeforeDate>" + formatDate + "</CreatedBeforeDate>");
                        }
                        if (storageTransition.hasIsAccessTime()) {
                            xmlBody.append("<IsAccessTime>" + storageTransition.getIsAccessTime() + "</IsAccessTime>");
                        }
                        if (storageTransition.hasReturnToStdWhenVisit()) {
                            xmlBody.append("<ReturnToStdWhenVisit>" + storageTransition.getReturnToStdWhenVisit() + "</ReturnToStdWhenVisit>");
                        }

                        if (storageTransition.hasAllowSmallFile()) {
                            xmlBody.append("<AllowSmallFile>" + storageTransition.getAllowSmallFile() + "</AllowSmallFile>");
                        }

                        xmlBody.append("<StorageClass>" + storageTransition.getStorageClass() + "</StorageClass>");
                        xmlBody.append("</Transition>");
                    }
                }

                if (rule.hasNoncurrentVersionExpiration()) {
                    NoncurrentVersionExpiration expiration = rule.getNoncurrentVersionExpiration();
                    if (expiration.hasNoncurrentDays()) {
                        xmlBody.append("<NoncurrentVersionExpiration><NoncurrentDays>" + expiration.getNoncurrentDays() +
                                "</NoncurrentDays></NoncurrentVersionExpiration>");
                    }
                }

                if (rule.hasNoncurrentVersionStorageTransitions()) {
                    for (NoncurrentVersionStorageTransition transition : rule.getNoncurrentVersionStorageTransitions()) {
                        xmlBody.append("<NoncurrentVersionTransition>");
                        xmlBody.append("<NoncurrentDays>" + transition.getNoncurrentDays() + "</NoncurrentDays>");
                        if (transition.hasIsAccessTime()) {
                            xmlBody.append("<IsAccessTime>" + transition.getIsAccessTime() + "</IsAccessTime>");
                        }
                        if (transition.hasReturnToStdWhenVisit()) {
                            xmlBody.append("<ReturnToStdWhenVisit>" + transition.getReturnToStdWhenVisit() + "</ReturnToStdWhenVisit>");
                        }

                        if (transition.hasAllowSmallFile()) {
                            xmlBody.append("<AllowSmallFile>" + transition.getAllowSmallFile() + "</AllowSmallFile>");
                        }

                        xmlBody.append("<StorageClass>" + transition.getStorageClass() + "</StorageClass>");
                        xmlBody.append("</NoncurrentVersionTransition>");
                    }
                }

                xmlBody.append("</Rule>");
            }
            xmlBody.append("</LifecycleConfiguration>");
            return stringMarshaller.marshall(xmlBody.toString());
        }