Merge pull request #293 from Doha2012/master

upgrade httpClient
This commit is contained in:
Eugen 2015-12-07 12:58:01 +02:00
commit c576a3cb1e
8 changed files with 61 additions and 29 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<faceted-project> <faceted-project>
<installed facet="wst.jsdt.web" version="1.0"/> <installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="java" version="1.8"/> <installed facet="java" version="1.8"/>
<installed facet="jst.web" version="3.1"/>
</faceted-project> </faceted-project>

View File

@ -0,0 +1,29 @@
package org.baeldung.caching.config;
import java.util.Arrays;
import org.baeldung.caching.example.CustomerDataService;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCache;
import org.springframework.cache.support.SimpleCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableCaching
public class CachingConfig {
@Bean
public CustomerDataService customerDataService() {
return new CustomerDataService();
}
@Bean
public CacheManager cacheManager() {
final SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("directory"), new ConcurrentMapCache("addresses")));
return cacheManager;
}
}

View File

@ -1,10 +0,0 @@
package org.baeldung.caching.config;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableCaching
public class MyAppConfig {
// Your configuration code goes here.
}

View File

@ -10,12 +10,18 @@ import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@CacheConfig(cacheNames = { "addressDemo" }) @CacheConfig(cacheNames = { "addresses" })
public class CustomerDataService { public class CustomerDataService {
@Autowired @Autowired
CacheManager cacheManager; CacheManager cacheManager;
// this method configuration is equivalent to xml configuration
@Cacheable(value = "addresses", key = "#customer.name")
public String getAddress(final Customer customer) {
return customer.getAddress();
}
/** /**
* The method returns the customer's address, * The method returns the customer's address,
only it doesn't find it the cache- addresses and directory. only it doesn't find it the cache- addresses and directory.

View File

@ -10,8 +10,7 @@
<cache:annotation-driven/> <cache:annotation-driven/>
<context:annotation-config/> <!-- <context:annotation-config/> -->
<bean class="org.baeldung.caching.config.MyAppConfig"/>
<!-- the service that you wish to make cacheable. --> <!-- the service that you wish to make cacheable. -->
<bean id="customerDataService" class="org.baeldung.caching.example.CustomerDataService"/> <bean id="customerDataService" class="org.baeldung.caching.example.CustomerDataService"/>
@ -21,7 +20,6 @@
<set> <set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="directory"/> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="directory"/>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="addresses"/> <bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="addresses"/>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="addressDemo"/>
</set> </set>
</property> </property>
</bean> </bean>
@ -34,7 +32,7 @@
</cache:advice> </cache:advice>
<!-- apply the behavior to all the implementations of CustomerDataService interface --> <!-- apply the behavior to all the implementations of CustomerDataService -->
<aop:config> <aop:config>
<aop:advisor advice-ref="cachingBehavior" pointcut="execution(* org.baeldung.caching.example.CustomerDataService.*(..))"/> <aop:advisor advice-ref="cachingBehavior" pointcut="execution(* org.baeldung.caching.example.CustomerDataService.*(..))"/>
</aop:config> </aop:config>

View File

@ -1,11 +1,11 @@
package org.baeldung.caching.test; package org.baeldung.caching.test;
import org.baeldung.caching.config.CachingConfig;
import org.baeldung.caching.example.Customer; import org.baeldung.caching.example.Customer;
import org.baeldung.caching.example.CustomerDataService; import org.baeldung.caching.example.CustomerDataService;
import org.junit.Test; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
@Component @Component
public class SpringCachingBehaviorTest { public class SpringCachingBehaviorTest {
@ -13,12 +13,16 @@ public class SpringCachingBehaviorTest {
@Test @Test
public void testCaching() { public void testCaching() {
@SuppressWarnings("resource") @SuppressWarnings("resource")
final ApplicationContext context = new ClassPathXmlApplicationContext("config.xml"); final
// final ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(CachingConfig.class);
context.refresh();
final CustomerDataService service = context.getBean(CustomerDataService.class); final CustomerDataService service = context.getBean(CustomerDataService.class);
final Customer cust = new Customer("Tom", "67-2, Downing Street, NY"); final Customer cust = new Customer("Tom", "67-2, Downing Street, NY");
service.getAddress1(cust); service.getAddress(cust);
service.getAddress1(cust); service.getAddress(cust);
// fail("Unable to instantiate the CustomerDataService"); // fail("Unable to instantiate the CustomerDataService");
} }

View File

@ -6,11 +6,14 @@ import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope; import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.AuthCache; import org.apache.http.client.AuthCache;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.ClientContext; import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.DigestScheme; import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
@ -27,9 +30,11 @@ public class ClientPreemptiveDigestAuthentication {
public static void main(final String[] args) throws Exception { public static void main(final String[] args) throws Exception {
final HttpHost targetHost = new HttpHost("localhost", 8080, "http"); final HttpHost targetHost = new HttpHost("localhost", 8080, "http");
final DefaultHttpClient httpclient = new DefaultHttpClient(); final CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user1", "user1Pass"));
final CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
try { try {
httpclient.getCredentialsProvider().setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), new UsernamePasswordCredentials("user1", "user1Pass"));
// Create AuthCache instance // Create AuthCache instance
final AuthCache authCache = new BasicAuthCache(); final AuthCache authCache = new BasicAuthCache();
@ -43,7 +48,7 @@ public class ClientPreemptiveDigestAuthentication {
// Add AuthCache to the execution context // Add AuthCache to the execution context
final BasicHttpContext localcontext = new BasicHttpContext(); final BasicHttpContext localcontext = new BasicHttpContext();
localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache); localcontext.setAttribute(HttpClientContext.AUTH_CACHE, authCache);
final HttpGet httpget = new HttpGet("http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"); final HttpGet httpget = new HttpGet("http://localhost:8080/spring-security-rest-digest-auth/api/foos/1");
@ -63,7 +68,7 @@ public class ClientPreemptiveDigestAuthentication {
} }
} finally { } finally {
// When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources // When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown(); httpclient.close();
} }
} }

View File

@ -5,7 +5,7 @@ import java.net.URI;
import org.apache.http.HttpHost; import org.apache.http.HttpHost;
import org.apache.http.client.AuthCache; import org.apache.http.client.AuthCache;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.protocol.ClientContext; import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.DigestScheme; import org.apache.http.impl.auth.DigestScheme;
import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.BasicHttpContext;
@ -41,7 +41,7 @@ public class HttpComponentsClientHttpRequestFactoryDigestAuth extends HttpCompon
// Add AuthCache to the execution context // Add AuthCache to the execution context
final BasicHttpContext localcontext = new BasicHttpContext(); final BasicHttpContext localcontext = new BasicHttpContext();
localcontext.setAttribute(ClientContext.AUTH_CACHE, authCache); localcontext.setAttribute(HttpClientContext.AUTH_CACHE, authCache);
return localcontext; return localcontext;
} }