package org.transgalactica.fwk.test.clienthttp; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.support.HttpAccessor; public class ClientHttpRequestFactoryMockLoader implements InitializingBean, ApplicationContextAware { private static final Logger LOGGER = LoggerFactory.getLogger(ClientHttpRequestFactoryMockLoader.class); private ApplicationContext applicationContext; private boolean ignoreUnresolvableAccessors = true; private ClientHttpRequestFactory mock; private List<String> accessorsNamesToMock; protected ClientHttpRequestFactoryMockLoader() { } @Override public void afterPropertiesSet() { if (org.springframework.util.CollectionUtils.isEmpty(accessorsNamesToMock)) { LOGGER.warn("No accessors to mock have been defined"); return; } for (String idAccessor : accessorsNamesToMock) { mockAccessor(idAccessor); } } private void mockAccessor(String accessorName) { if (applicationContext.containsBean(accessorName)) { HttpAccessor accessor = applicationContext.getBean(accessorName, HttpAccessor.class); accessor.setRequestFactory(mock); } else if (ignoreUnresolvableAccessors) { LOGGER.warn("Accessors with name {} not found in context", accessorName); } else { throw new IllegalArgumentException("Can't find accessor with name " + accessorName); } } /* * Accesseurs */ public ClientHttpRequestFactory getMock() { return mock; } public void setMock(ClientHttpRequestFactory mock) { this.mock = mock; } public List<String> getAccessorsNamesToMock() { return accessorsNamesToMock; } public void setAccessorsNamesToMock(List<String> accessorsNamesToMock) { this.accessorsNamesToMock = accessorsNamesToMock; } public boolean isIgnoreUnresolvableAccessors() { return ignoreUnresolvableAccessors; } public void setIgnoreUnresolvableAccessors(boolean ignoreUnresolvableAccessors) { this.ignoreUnresolvableAccessors = ignoreUnresolvableAccessors; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }