/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package uk.ac.ebi.ep.ep.benchmarks.configs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.AsyncRestTemplate; import org.springframework.web.client.RestTemplate; import uk.ac.ebi.ep.ebeye.EbeyeQueryService; import uk.ac.ebi.ep.ebeye.EbeyeQueryServiceImpl; import uk.ac.ebi.ep.ebeye.EbeyeRestService; import uk.ac.ebi.ep.ebeye.EbeyeSuggestionService; import uk.ac.ebi.ep.ebeye.EnzymeCentricService; import uk.ac.ebi.ep.ebeye.config.EbeyeIndexProps; /** * * @author Joseph <joseph@ebi.ac.uk> */ @Configuration @PropertySource({"classpath:ebeye.es"}) public class EbeyeRestServiceConfig { private static final int REQUEST_TIMEOUT_MILLIS = 60000; @Autowired private Environment env; @Bean public AsyncRestTemplate asyncRestTemplate() { //return new AsyncRestTemplate(asyncClientHttpRequestFactory()); return new AsyncRestTemplate(); } @Bean public RestTemplate restTemplate() { return new RestTemplate(clientHttpRequestFactory()); } private ClientHttpRequestFactory clientHttpRequestFactory() { HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); factory.setReadTimeout(REQUEST_TIMEOUT_MILLIS); factory.setConnectTimeout(REQUEST_TIMEOUT_MILLIS); return factory; } @Bean public EbeyeRestService ebeyeRestService(EbeyeQueryService proteinQueryService) { return new EbeyeRestService(proteinQueryService); } @Bean public EbeyeQueryService proteinQueryService(EbeyeIndexProps proteinCentricProps, RestTemplate restTemplate) { return new EbeyeQueryServiceImpl(proteinCentricProps, restTemplate); } @Bean public EnzymeCentricService enzymeCentricService(RestTemplate restTemplate, EbeyeIndexProps enzymeCentricProps) { return new EnzymeCentricService(restTemplate, enzymeCentricProps); } @Bean public EbeyeQueryService enzymeQueryService(EbeyeIndexProps enzymeCentricProps, RestTemplate restTemplate) { return new EbeyeQueryServiceImpl(enzymeCentricProps, restTemplate); } @Bean public EbeyeIndexProps ebeyeIndexProps() { int maxEbiRequests = Integer.parseInt(env.getProperty("ebeye.max.ebi.requests")); int chunkSize = Integer.parseInt(env.getProperty("ebeye.chunk.size")); String enzymeCentricUrl = env.getProperty("ep.enzyme.centric.search.url"); String proteinCentricUrl = env.getProperty("ep.protein.centric.search.url"); EbeyeIndexProps url = new EbeyeIndexProps(); url.setProteinCentricSearchUrl(proteinCentricUrl); url.setEnzymeCentricSearchUrl(enzymeCentricUrl); url.setChunkSize(chunkSize); url.setMaxEbiSearchLimit(maxEbiRequests); return url; } @Bean public EbeyeSuggestionService ebeyeSuggestionService() { return new EbeyeSuggestionService(ebeyeIndexProps(), restTemplate()); } @Bean public EbeyeSuggestionService ebeyeSuggestionService(EbeyeIndexProps enzymeCentricProps, RestTemplate restTemplate) { return new EbeyeSuggestionService(enzymeCentricProps, restTemplate); } }