com.wudaosoft.net.httpclient.WorkerBuilder.java Source code

Java tutorial

Introduction

Here is the source code for com.wudaosoft.net.httpclient.WorkerBuilder.java

Source

/**
 *    Copyright 2009-2018 Wudao Software Studio(wudaosoft.com)
 * 
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 * 
 *        http://www.apache.org/licenses/LICENSE-2.0
 * 
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package com.wudaosoft.net.httpclient;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

import javax.xml.transform.sax.SAXSource;

import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.entity.ContentType;
import org.apache.http.util.Args;

import com.alibaba.fastjson.JSONObject;
import com.wudaosoft.net.utils.XmlReader;
import com.wudaosoft.net.xml.XmlObject;

/**
 * @author changsoul.wu
 *
 */
public class WorkerBuilder {

    private String method;
    private String url;
    private HttpClientContext context;
    private Map<String, String> parameters;
    private String stringBody;
    private String fileFieldName = "upfile";
    private String filename;
    private File fileBody;
    private InputStream streamBody;
    private boolean isAjax = false;
    private boolean isAnyHost = false;
    private int readTimeout = -1;

    private Request request;

    WorkerBuilder(Request request) {
        super();
        this.request = request;
    }

    WorkerBuilder(Request request, final String method, final String url) {
        this(request);
        this.method = method;
        this.url = url;
    }

    /**
     * @param method the method to set
     */
    public WorkerBuilder withMethod(String method) {
        this.method = method;
        return this;
    }

    /**
     * @param url the url to set
     */
    public WorkerBuilder withUrl(String url) {
        this.url = url;
        return this;
    }

    /**
     * @param context the context to set
     */
    public WorkerBuilder withContext(HttpClientContext context) {
        this.context = context;
        return this;
    }

    /**
     * @param parameters the parameters to set
     */
    public WorkerBuilder withParameters(Map<String, String> parameters) {
        this.parameters = parameters;
        return this;
    }

    /**
     * @param stringBody the stringBody to set
     */
    public WorkerBuilder withStringBody(String stringBody) {
        this.stringBody = stringBody;
        return this;
    }

    /**
     * @param fileFieldName the fileFieldName to set
     */
    public WorkerBuilder withFileFieldName(String fileFieldName) {
        this.fileFieldName = fileFieldName;
        return this;
    }

    /**
     * @param filename the filename to set
     */
    public WorkerBuilder withFilename(String filename) {
        this.filename = filename;
        return this;
    }

    /**
     * @param fileBody the fileBody to set
     */
    public WorkerBuilder withFileBody(File fileBody) {
        this.fileBody = fileBody;
        return this;
    }

    /**
     * @param streamBody the streamBody to set
     */
    public WorkerBuilder withStreamBody(InputStream streamBody) {
        this.streamBody = streamBody;
        return this;
    }

    /**
     */
    public WorkerBuilder withAjax() {
        this.isAjax = true;
        return this;
    }

    //   public WorkerBuilder asFullUrl() {
    //      this.isAnyHost = true;
    //      return this;
    //   }

    /**
     * ????????
     * 0?
     * 
     * @param readTimeout the readTimeout to set
     */
    public WorkerBuilder withReadTimeout(int readTimeout) {
        this.readTimeout = Args.notNegative(readTimeout, "readTimeout");
        return this;
    }

    /**
     * @return the method
     */
    String getMethod() {
        return method;
    }

    /**
     * @return the url
     */
    String getUrl() {
        return url;
    }

    /**
     * @return the context
     */
    HttpClientContext getContext() {
        return context;
    }

    /**
     * @return the parameters
     */
    Map<String, String> getParameters() {
        return parameters;
    }

    /**
     * @return the stringBody
     */
    String getStringBody() {
        return stringBody;
    }

    /**
     * @return the fileFieldName
     */
    String getFileFieldName() {
        return fileFieldName;
    }

    /**
     * @return the filename
     */
    String getFilename() {
        return filename;
    }

    /**
     * @return the fileBody
     */
    File getFileBody() {
        return fileBody;
    }

    /**
     * @return the streamBody
     */
    InputStream getStreamBody() {
        return streamBody;
    }

    /**
     * @return the isAjax
     */
    boolean isAjax() {
        return isAjax;
    }

    /**
     * @return the isAnyHost
     */
    boolean isAnyHost() {
        return isAnyHost;
    }

    /**
     * @return the readTimeout
     */
    int getReadTimeout() {
        return readTimeout;
    }

    /**
     * @return JSONObject
     * @throws Exception
     */
    public JSONObject json() throws Exception {

        return request.doRequest(this, new JsonResponseHandler());
    }

    /**
     * @return SAXSource
     * @throws Exception
     */
    public SAXSource sax() throws Exception {
        return request.doRequest(this, new SAXSourceResponseHandler());
    }

    /**
     * @return XmlObject
     * @throws Exception
     */
    public XmlObject xml() throws Exception {
        return request.doRequest(this, new XmlResponseHandler());
    }

    /**
     * @return String
     * @throws Exception
     */
    public String execute() throws Exception {
        return request.doRequest(this, new StringResponseHandler());
    }

    public int noResult() throws Exception {
        return request.doRequest(this, new NoResultResponseHandler(ContentType.APPLICATION_JSON)).intValue();
    }

    public int noResult(ContentType contentType) throws Exception {
        return request.doRequest(this, new NoResultResponseHandler(contentType)).intValue();
    }

    /**
     * @param file 
     * @return File ??
     * @throws Exception
     */
    public File file(final File file) throws Exception {
        return request.doRequest(this, new FileResponseHandler(file));
    }

    /**
     * @param dir 
     * @return File ??
     * @throws Exception
     */
    public File file(final String dir) throws Exception {
        return request.doRequest(this, new FileResponseHandler(dir));
    }

    /**
     * @return BufferedImage
     * @throws Exception
     */
    public BufferedImage image() throws Exception {
        return request.doRequest(this, new ImageResponseHandler());
    }

    /**
     * @param out The OutputStream to write
     * @throws Exception
     */
    public void stream(OutputStream out) throws Exception {
        request.doRequest(this, new OutputStreamResponseHandler(out));
    }

    /**
     * @param clazz
     * @return JavaObject
     * @throws Exception
     */
    public <T> T javaObject(Class<? extends T> clazz) throws Exception {
        return json().toJavaObject(clazz);
    }

    /**
     * @param clazz
     * @return JavaObject
     * @throws Exception
     */
    public <T> T javaObjectFromXml(Class<? extends T> clazz) throws Exception {
        return XmlReader.readFromSource(clazz, sax());
    }

}