org.intermine.app.net.request.BaseRequest.java Source code

Java tutorial

Introduction

Here is the source code for org.intermine.app.net.request.BaseRequest.java

Source

package org.intermine.app.net.request;

/*
 * Copyright (C) 2015 InterMine
 *
 * This code may be freely distributed and modified under the
 * terms of the GNU Lesser General Public Licence.  This should
 * be distributed with the code.  See the LICENSE file for more
 * information or http://www.gnu.org/copyleft/lesser.html.
 *
 */

import android.content.Context;

import com.octo.android.robospice.request.springandroid.SpringAndroidSpiceRequest;

import org.apache.http.client.HttpClient;
import org.intermine.app.InterMineApplication;
import org.intermine.app.net.DefaultRetryPolicy;
import org.intermine.app.net.HttpUtils;
import org.intermine.app.net.ServerErrorHandler;
import org.intermine.app.storage.Storage;
import org.springframework.http.ContentCodingType;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

import javax.inject.Inject;

public abstract class BaseRequest<T> extends SpringAndroidSpiceRequest<T> {
    public final static String CONTENT_ENCODING = "UTF-8";

    @Inject
    Storage mStorage;
    private Context mContext;
    private String mUrl;
    private Map<String, ?> mUrlParams;

    public BaseRequest(Class<T> clazz, Context ctx, String url, Map<String, ?> params) {
        super(clazz);

        setContext(ctx);
        setUrl(url);
        setUrlParams(params);

        InterMineApplication app = InterMineApplication.get(ctx);
        app.inject(this);

        setRetryPolicy(new DefaultRetryPolicy());
    }

    @Override
    public RestTemplate getRestTemplate() {
        HttpClient httpClient = HttpUtils.getNewHttpClient();

        RestTemplate rtp = super.getRestTemplate();
        rtp.setErrorHandler(new ServerErrorHandler());
        rtp.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));

        return rtp;
    }

    public HttpHeaders getHeaders() {
        HttpHeaders headers = new HttpHeaders();

        headers.setAcceptEncoding(new ContentCodingType(CONTENT_ENCODING));
        headers.setContentEncoding(new ContentCodingType(CONTENT_ENCODING));
        return headers;
    }

    public Context getContext() {
        return mContext;
    }

    public void setContext(Context context) {
        mContext = context;
    }

    public String getUrl() {
        return mUrl;
    }

    public void setUrl(String url) {
        mUrl = url;
    }

    public Map<String, ?> getUrlParams() {
        return mUrlParams;
    }

    public void setUrlParams(Map<String, ?> urlParams) {
        mUrlParams = urlParams;
    }

    public Storage getStorage() {
        return mStorage;
    }

    protected String getBaseUrl(String mineName) {
        return getStorage().getMineNameToUrlMap().get(mineName);
    }
}