/*
* Copyright 2015 Eric Liu
*
* 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.liuguangqiang.asyncokhttp;
import com.liuguangqiang.asyncokhttp.json.BaseJsonEngine;
import com.liuguangqiang.asyncokhttp.json.GsonEngine;
import com.squareup.okhttp.Headers;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by Eric on 15/6/11.
*/
public class Configuration {
private ExecutorService threadPool;
private BaseJsonEngine jsonEngine;
private long connectTimeout;
private long readTimeout;
private Headers.Builder headersBuilder;
public BaseJsonEngine getJsonEngine() {
return jsonEngine;
}
public void setJsonEngine(BaseJsonEngine jsonEngine) {
this.jsonEngine = jsonEngine;
}
public long getConnectTimeout() {
return connectTimeout;
}
public void setConnectTimeout(long connectTimeout) {
this.connectTimeout = connectTimeout;
}
public long getReadTimeout() {
return readTimeout;
}
public void setReadTimeout(long readTimeout) {
this.readTimeout = readTimeout;
}
public Headers.Builder getHeadersBuilder() {
return headersBuilder;
}
public void setHeadersBuilder(Headers.Builder headersBuilder) {
this.headersBuilder = headersBuilder;
}
public ExecutorService getThreadPool() {
return threadPool;
}
public Configuration(Builder builder) {
threadPool = builder.threadPool;
jsonEngine = builder.jsonEngine;
connectTimeout = builder.connectTimeout;
readTimeout = builder.readTimeout;
headersBuilder = builder.headersBuilder;
}
public static Configuration createDefault() {
return new Builder().build();
}
public static class Builder {
private BaseJsonEngine jsonEngine;
private long connectTimeout;
private long readTimeout;
private Headers.Builder headersBuilder;
private ExecutorService threadPool;
public Builder() {
threadPool = Executors.newCachedThreadPool();
jsonEngine = new GsonEngine();
connectTimeout = 30;
readTimeout = 30;
headersBuilder = new Headers.Builder();
headersBuilder.add("User-Agent", Constants.USER_AGENT);
}
public Builder ExecutorService(ExecutorService executorService) {
this.threadPool = executorService;
return this;
}
public Builder jsonEngine(BaseJsonEngine jsonEngine) {
this.jsonEngine = jsonEngine;
return this;
}
public Builder connectTimeout(long connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}
public Builder readTimeout(long readTimeout) {
this.readTimeout = readTimeout;
return this;
}
public Builder headers(Headers.Builder header) {
this.headersBuilder = header;
return this;
}
public Configuration build() {
return new Configuration(this);
}
}
}