com.aliyun.android.oss.task.HeadObjectTask.java Source code

Java tutorial

Introduction

Here is the source code for com.aliyun.android.oss.task.HeadObjectTask.java

Source

/**
 * Copyright (c) 2012 The Wiseserc. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
package com.aliyun.android.oss.task;

import java.text.ParseException;
import java.util.Date;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpUriRequest;

import com.aliyun.android.oss.OSSErrorCode;
import com.aliyun.android.oss.OSSException;
import com.aliyun.android.oss.http.HttpMethod;
import com.aliyun.android.oss.http.OSSHttpTool;
import com.aliyun.android.oss.model.OSSObject;
import com.aliyun.android.util.Helper;

/**
 * Head Object??Objectmeta??
 * 
 * @author Michael
 */
public class HeadObjectTask extends Task {
    /**
     * object??
     */
    private String objectKey;

    /**
     * ?
     */
    private Date modifiedSince;

    /**
     * ?
     */
    private Date unModifiedSince;

    /**
     * ETag
     */
    private String expectedETag;

    /**
     * ?ETag
     */
    private String unexpectedETag;

    /**
     * 
     */
    public HeadObjectTask(String bucketName, String objectKey) {
        super(HttpMethod.HEAD, bucketName);
        this.objectKey = objectKey;
    }

    /**
     * ??
     */
    @Override
    protected void checkArguments() {
        if (Helper.isEmptyString(bucketName) || Helper.isEmptyString(objectKey)) {
            throw new IllegalArgumentException("bucketName or objectKey not properly set");
        }
    }

    /**
     * HttpHead
     */
    protected HttpUriRequest generateHttpRequest() {
        String requestUri = this.getOSSEndPoint()
                + httpTool.generateCanonicalizedResource("/" + OSSHttpTool.encodeUri(objectKey));
        HttpHead httpHead = new HttpHead(requestUri);

        String resource = httpTool.generateCanonicalizedResource("/" + bucketName + "/" + objectKey);
        String dateStr = Helper.getGMTDate();
        String authorization = OSSHttpTool.generateAuthorization(accessId, accessKey, httpMethod.toString(), "", "",
                dateStr, "", resource);

        httpHead.setHeader(AUTHORIZATION, authorization);
        httpHead.setHeader(DATE, dateStr);

        OSSHttpTool.addHttpRequestHeader(httpHead, IF_MODIFIED_SINCE, Helper.getGMTDate(modifiedSince));
        OSSHttpTool.addHttpRequestHeader(httpHead, IF_UNMODIFIED_SINCE, Helper.getGMTDate(unModifiedSince));
        OSSHttpTool.addHttpRequestHeader(httpHead, IF_MATCH, expectedETag);
        OSSHttpTool.addHttpRequestHeader(httpHead, IF_NONE_MATCH, unexpectedETag);

        return httpHead;
    }

    public String getBucketName() {
        return bucketName;
    }

    public void setBucketName(String bucketName) {
        this.bucketName = bucketName;
    }

    public String getObjectKey() {
        return objectKey;
    }

    public void setObjectKey(String objectKey) {
        this.objectKey = objectKey;
    }

    /**
     * ??304 Not Modified
     * 
     * @param modifiedSince
     *            
     */
    public void setModifiedSince(Date modifiedSince) {
        this.modifiedSince = modifiedSince;
    }

    /**
     * ???412 Precondition Failed
     * 
     * @return ?
     */
    public Date getUnModifiedSince() {
        return unModifiedSince;
    }

    /**
     * ??412 Precondition Failed
     * 
     * @param unModifiedSince
     *            ?
     */
    public void setUnModifiedSince(Date unModifiedSince) {
        this.unModifiedSince = unModifiedSince;
    }

    /**
     * ?TagTagobjectETag??412 Precondition Failed
     * 
     * @return Tag
     */
    public String getExpectedETag() {
        return expectedETag;
    }

    /**
     * TagTagobjectETag??412 Precondition Failed
     * 
     * @param expectedETag
     */
    public void setExpectedETag(String expectedETag) {
        this.expectedETag = expectedETag;
    }

    /**
     * ?TagTagobjectETag???304 Not Modified
     * 
     * @return Tag
     */
    public String getUnexpectedETag() {
        return unexpectedETag;
    }

    /**
     * TagTagobjectETag???304 Not Modified
     * 
     * @return Tag
     */
    public void setUnexpectedETag(String unexpectedETag) {
        this.unexpectedETag = unexpectedETag;
    }

    /**
     * Object??Metadata????
     * 
     * @return Head?Object
     * @throws OSSException
     */
    public OSSObject getResult() throws OSSException {
        try {
            HttpResponse r = this.execute();
            OSSObject obj = new OSSObject(this.bucketName, this.objectKey);
            obj.setObjectMetaData(OSSHttpTool.getObjectMetadataFromResponse(r));
            return obj;
        } catch (OSSException osse) {
            throw osse;
        } catch (ParseException pe) {
            OSSException ossException = new OSSException(pe);
            ossException.setErrorCode(OSSErrorCode.PARSE_METADATA_ERROR);
            throw ossException;
        } finally {
            this.releaseHttpClient();
        }
    }
}