diff --git a/jackson/pom.xml b/jackson/pom.xml index d017c7b65c..e424879a73 100644 --- a/jackson/pom.xml +++ b/jackson/pom.xml @@ -1,150 +1,157 @@ - - 4.0.0 - org.baeldung - jackson - 0.1-SNAPSHOT + + 4.0.0 + org.baeldung + jackson + 0.1-SNAPSHOT - jackson + jackson - + - + - - com.google.guava - guava - 16.0.1 - - - commons-io - commons-io - 2.4 - + + com.google.guava + guava + 17.0 + + + commons-io + commons-io + 2.4 + - - org.apache.commons - commons-collections4 - 4.0 - + + org.apache.commons + commons-collections4 + 4.0 + - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + - + - + - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + - + + com.google.code.gson + gson + 2.3 + - - junit - junit-dep - ${junit.version} - test - + - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - + + junit + junit-dep + ${junit.version} + test + - - org.mockito - mockito-core - ${mockito.version} - test - + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + - + + org.mockito + mockito-core + ${mockito.version} + test + - - jackson - - - src/main/resources - true - - + - + + jackson + + + src/main/resources + true + + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - 1.7 - 1.7 - - + - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.7 + 1.7 + + - + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + - + - - - 4.0.6.RELEASE - 3.2.4.RELEASE + - - 4.3.6.Final - 5.1.31 + + + 4.0.6.RELEASE + 3.2.4.RELEASE - - 2.4.1 + + 4.3.6.Final + 5.1.31 - - 1.7.7 - 1.1.2 + + 2.4.1 - - 5.1.2.Final + + 1.7.7 + 1.1.2 - - 17.0 - 3.3.2 + + 5.1.2.Final - - 1.3 - 4.11 - 1.9.5 + + 17.0 + 3.3.2 - 4.3.2 - 4.3.5 + + 1.3 + 4.11 + 1.9.5 - 2.3.2 + 4.3.2 + 4.3.5 - - 3.1 - 2.4 - 2.17 - 2.6 - 1.4.8 + 2.3.2 - + + 3.1 + 2.4 + 2.17 + 2.6 + 1.4.8 + + \ No newline at end of file diff --git a/jackson/src/test/java/org/baeldung/gson/GenericSourceClass.java b/jackson/src/test/java/org/baeldung/gson/GenericSourceClass.java new file mode 100644 index 0000000000..8e3a8d749b --- /dev/null +++ b/jackson/src/test/java/org/baeldung/gson/GenericSourceClass.java @@ -0,0 +1,10 @@ +package org.baeldung.gson; + +public class GenericSourceClass { + int intField; + + public GenericSourceClass(final int i) { + intField = i; + } + +} \ No newline at end of file diff --git a/jackson/src/test/java/org/baeldung/gson/GsonDeserializationUnitTest.java b/jackson/src/test/java/org/baeldung/gson/GsonDeserializationUnitTest.java new file mode 100644 index 0000000000..dabc861ce1 --- /dev/null +++ b/jackson/src/test/java/org/baeldung/gson/GsonDeserializationUnitTest.java @@ -0,0 +1,32 @@ +package org.baeldung.gson; + +import org.junit.Before; +import org.junit.Test; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +public class GsonDeserializationUnitTest { + + private Gson gson; + + @Before + public final void before() { + gson = new Gson(); + } + + // tests + + @Test + public void givenUsingGson_whenDeserializingGeneric_thenCorrect() { + final java.lang.reflect.Type genericSourceClassType = new TypeToken() { + }.getType(); + final GenericSourceClass sourceObject = new GenericSourceClass(1); + final String serializedSourceObject = gson.toJson(sourceObject, genericSourceClassType); + + final GenericSourceClass targetObject = gson.fromJson(serializedSourceObject, genericSourceClassType); + + System.out.println(targetObject); + } + +} diff --git a/spring-security-rest-digest-auth/pom.xml b/spring-security-rest-digest-auth/pom.xml index c9c6617645..9231c745a0 100644 --- a/spring-security-rest-digest-auth/pom.xml +++ b/spring-security-rest-digest-auth/pom.xml @@ -89,7 +89,7 @@ com.fasterxml.jackson.core jackson-databind - 2.2.2 + ${jackson.version} @@ -227,13 +227,13 @@ source - + org.apache.maven.plugins maven-war-plugin ${maven-war-plugin.version} - + org.apache.maven.plugins maven-surefire-plugin @@ -290,6 +290,9 @@ 1.7.7 1.1.2 + + 2.4.2 + 5.1.2.Final @@ -308,7 +311,7 @@ 3.1 2.4 2.17 - 1.4.8 + 1.4.9 diff --git a/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java b/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java index d9d89db224..698ab4cb92 100644 --- a/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java +++ b/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/HttpComponentsClientHttpRequestFactoryDigestAuth.java @@ -4,6 +4,7 @@ import java.net.URI; import org.apache.http.HttpHost; import org.apache.http.client.AuthCache; +import org.apache.http.client.HttpClient; import org.apache.http.client.protocol.ClientContext; import org.apache.http.impl.auth.DigestScheme; import org.apache.http.impl.client.BasicAuthCache; @@ -15,8 +16,8 @@ import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; public class HttpComponentsClientHttpRequestFactoryDigestAuth extends HttpComponentsClientHttpRequestFactory { HttpHost host; - public HttpComponentsClientHttpRequestFactoryDigestAuth(final HttpHost host) { - super(); + public HttpComponentsClientHttpRequestFactoryDigestAuth(final HttpHost host, final HttpClient httpClient) { + super(httpClient); this.host = host; } diff --git a/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/spring/ClientConfig.java b/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/spring/ClientConfig.java index 615be8f524..9a3b177500 100644 --- a/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/spring/ClientConfig.java +++ b/spring-security-rest-digest-auth/src/main/java/org/baeldung/client/spring/ClientConfig.java @@ -1,9 +1,13 @@ package org.baeldung.client.spring; import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; import org.apache.http.client.HttpClient; -import org.apache.http.params.HttpConnectionParams; -import org.apache.http.params.HttpParams; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; import org.baeldung.client.HttpComponentsClientHttpRequestFactoryDigestAuth; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -12,6 +16,8 @@ import org.springframework.web.client.RestTemplate; @Configuration public class ClientConfig { + private static final String DEFAULT_USER = "user1"; + private static final String DEFAULT_PASS = "user1Pass"; public ClientConfig() { super(); @@ -22,7 +28,9 @@ public class ClientConfig { @Bean public RestTemplate restTemplate() { final HttpHost host = new HttpHost("localhost", 8080, "http"); - final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactoryDigestAuth(host); + final CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider()).useSystemProperties().build(); + + final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactoryDigestAuth(host, client); final RestTemplate restTemplate = new RestTemplate(requestFactory); final int timeout = 5; @@ -43,9 +51,16 @@ public class ClientConfig { // httpClient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000); // - note: timeout via the API - final HttpParams httpParams = httpClient.getParams(); - HttpConnectionParams.setConnectionTimeout(httpParams, timeout * 1000); // http.connection.timeout - HttpConnectionParams.setSoTimeout(httpParams, timeout * 1000); // http.socket.timeout + // final HttpParams httpParams = httpClient.getParams(); + // HttpConnectionParams.setConnectionTimeout(httpParams, timeout * 1000); // http.connection.timeout + // HttpConnectionParams.setSoTimeout(httpParams, timeout * 1000); // http.socket.timeout + } + + private final CredentialsProvider provider() { + final CredentialsProvider provider = new BasicCredentialsProvider(); + final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(DEFAULT_USER, DEFAULT_PASS); + provider.setCredentials(AuthScope.ANY, credentials); + return provider; } } \ No newline at end of file diff --git a/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientNoSpringLiveTest.java b/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientNoSpringLiveTest.java new file mode 100644 index 0000000000..245d5d0a41 --- /dev/null +++ b/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientNoSpringLiveTest.java @@ -0,0 +1,64 @@ +package org.baeldung.client; + +import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.baeldung.web.dto.Foo; +import org.junit.Test; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +public class ClientNoSpringLiveTest { + private static final String DEFAULT_USER = "user1"; + private static final String DEFAULT_PASS = "user1Pass"; + + // tests - no Spring + + @Test + public final void givenUsingCustomHttpRequestFactory_whenSecuredRestApiIsConsumed_then200OK() { + final HttpHost host = new HttpHost("localhost", 8080, "http"); + + final CredentialsProvider credentialsProvider = provider(); + final CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).useSystemProperties().build(); + final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactoryDigestAuth(host, client); + final RestTemplate restTemplate = new RestTemplate(requestFactory); + + // credentialsProvider.setCredentials(new AuthScope("localhost", 8080, AuthScope.ANY_REALM), new UsernamePasswordCredentials("user1", "user1Pass")); + + final String uri = "http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"; + final ResponseEntity responseEntity = restTemplate.exchange(uri, HttpMethod.GET, null, Foo.class); + + System.out.println(responseEntity.getStatusCode()); + } + + @Test + public final void givenUsingStandardRequestFactory_whenSecuredRestApiIsConsumed_then200OK() { + final CredentialsProvider credentialsProvider = provider(); + final CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).useSystemProperties().build(); + final HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(client); + final RestTemplate restTemplate = new RestTemplate(requestFactory); + + // credentialsProvider.setCredentials(new AuthScope("localhost", 8080, AuthScope.ANY_REALM), new UsernamePasswordCredentials("user1", "user1Pass")); + + final String uri = "http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"; + final ResponseEntity responseEntity = restTemplate.exchange(uri, HttpMethod.GET, null, Foo.class); + + System.out.println(responseEntity.getStatusCode()); + } + + // UTIL + + private final CredentialsProvider provider() { + final CredentialsProvider provider = new BasicCredentialsProvider(); + final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(DEFAULT_USER, DEFAULT_PASS); + provider.setCredentials(AuthScope.ANY, credentials); + return provider; + } + +} diff --git a/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientLiveTest.java b/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientWithSpringLiveTest.java similarity index 62% rename from spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientLiveTest.java rename to spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientWithSpringLiveTest.java index 9ab6854f61..b40f9ef472 100644 --- a/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientLiveTest.java +++ b/spring-security-rest-digest-auth/src/test/java/org/baeldung/client/ClientWithSpringLiveTest.java @@ -1,8 +1,5 @@ package org.baeldung.client; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.impl.client.DefaultHttpClient; import org.baeldung.client.spring.ClientConfig; import org.baeldung.web.dto.Foo; import org.junit.Test; @@ -10,7 +7,6 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; @@ -18,21 +14,18 @@ import org.springframework.web.client.RestTemplate; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { ClientConfig.class }, loader = AnnotationConfigContextLoader.class) -public class ClientLiveTest { +public class ClientWithSpringLiveTest { @Autowired private RestTemplate restTemplate; - // tests + // tests - no Spring @Test public final void whenSecuredRestApiIsConsumed_then200OK() { - final HttpComponentsClientHttpRequestFactory requestFactory = (HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory(); - final DefaultHttpClient httpClient = (DefaultHttpClient) requestFactory.getHttpClient(); - httpClient.getCredentialsProvider().setCredentials(new AuthScope("localhost", 8080, AuthScope.ANY_REALM), new UsernamePasswordCredentials("user1", "user1Pass")); - final String uri = "http://localhost:8080/spring-security-rest-digest-auth/api/foos/1"; final ResponseEntity responseEntity = restTemplate.exchange(uri, HttpMethod.GET, null, Foo.class); + System.out.println(responseEntity.getStatusCode()); }