org.nmdp.service.epitope.client.EpitopeServiceModule.java Source code

Java tutorial

Introduction

Here is the source code for org.nmdp.service.epitope.client.EpitopeServiceModule.java

Source

/*
    
epitope-service  T-cell epitope group matching service for HLA-DPB1 locus.
Copyright (c) 2014-2015 National Marrow Donor Program (NMDP)
    
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
    
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
License for more details.
    
You should have received a copy of the GNU Lesser General Public License
along with this library;  if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.
    
> http://www.gnu.org/licenses/lgpl.html
    
*/

package org.nmdp.service.epitope.client;

import com.fasterxml.jackson.annotation.JsonInclude.Include;

import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.Singleton;

import retrofit.RestAdapter;

//import retrofit.client.Request;
//import retrofit.client.RequestBody;

import retrofit.converter.JacksonConverter;

/**
 * Epitope service client module.
 */
public final class EpitopeServiceModule extends AbstractModule {

    @Override
    protected void configure() {
        // empty
    }

    @Provides
    @Singleton
    static EpitopeService createEpitopeService(@EndpointUrl final String endpointUrl) {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.enable(SerializationFeature.INDENT_OUTPUT).setSerializationInclusion(Include.NON_NULL)
                .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);

        return new RestAdapter.Builder().setEndpoint(endpointUrl).setConverter(new JacksonConverter(objectMapper))
                //.setRequestInterceptor(new GzipRequestInterceptor())
                .build().create(EpitopeService.class);
    }
    /*
    static final class GzipRequestInterceptor implements Interceptor {
    @Override
    public Response intercept(final Chain chain) throws IOException {
        Request originalRequest = chain.request();
        if (originalRequest.body() == null || originalRequest.header("Content-Encoding") != null) {
            return chain.proceed(originalRequest);
        }
        Request compressedRequest = originalRequest.newBuilder()
            .header("Content-Encoding", "gzip")
            .method(originalRequest.method(), gzip(originalRequest.body()))
            .build();
        return chain.proceed(compressedRequest);
    }
        
    private RequestBody gzip(final RequestBody body) {
        return new RequestBody() {
            @Override public MediaType contentType() {
                return body.contentType();
            }
        
            @Override public long contentLength() {
                return -1; // We don't know the compressed length in advance!
            }
        
            @Override public void writeTo(BufferedSink sink) throws IOException {
                BufferedSink gzipSink = Okio.buffer(new GzipSink(sink));
                body.writeTo(gzipSink);
                gzipSink.close();
            }
        };
    }
    }
    */
}