further jackson work - ignroing new fields, and some httpclient cookie work
This commit is contained in:
parent
e4df951d1b
commit
c4b0cfcb43
|
@ -69,6 +69,7 @@ public class HttpClientCookieLiveTest {
|
||||||
final BasicCookieStore cookieStore = new BasicCookieStore();
|
final BasicCookieStore cookieStore = new BasicCookieStore();
|
||||||
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
||||||
cookie.setDomain(".github.com");
|
cookie.setDomain(".github.com");
|
||||||
|
cookie.setPath("/");
|
||||||
cookieStore.addCookie(cookie);
|
cookieStore.addCookie(cookie);
|
||||||
final DefaultHttpClient client = new DefaultHttpClient();
|
final DefaultHttpClient client = new DefaultHttpClient();
|
||||||
client.setCookieStore(cookieStore);
|
client.setCookieStore(cookieStore);
|
||||||
|
@ -85,6 +86,7 @@ public class HttpClientCookieLiveTest {
|
||||||
final BasicCookieStore cookieStore = new BasicCookieStore();
|
final BasicCookieStore cookieStore = new BasicCookieStore();
|
||||||
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
||||||
cookie.setDomain(".github.com");
|
cookie.setDomain(".github.com");
|
||||||
|
cookie.setPath("/");
|
||||||
cookieStore.addCookie(cookie);
|
cookieStore.addCookie(cookie);
|
||||||
instance = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
|
instance = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
|
||||||
|
|
||||||
|
@ -100,6 +102,7 @@ public class HttpClientCookieLiveTest {
|
||||||
final BasicCookieStore cookieStore = new BasicCookieStore();
|
final BasicCookieStore cookieStore = new BasicCookieStore();
|
||||||
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
final BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234");
|
||||||
cookie.setDomain(".github.com");
|
cookie.setDomain(".github.com");
|
||||||
|
cookie.setPath("/");
|
||||||
cookieStore.addCookie(cookie);
|
cookieStore.addCookie(cookie);
|
||||||
instance = HttpClientBuilder.create().build();
|
instance = HttpClientBuilder.create().build();
|
||||||
|
|
||||||
|
@ -107,6 +110,7 @@ public class HttpClientCookieLiveTest {
|
||||||
|
|
||||||
final HttpContext localContext = new BasicHttpContext();
|
final HttpContext localContext = new BasicHttpContext();
|
||||||
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
|
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
|
||||||
|
// localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); // before 4.3
|
||||||
response = instance.execute(request, localContext);
|
response = instance.execute(request, localContext);
|
||||||
|
|
||||||
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
assertThat(response.getStatusLine().getStatusCode(), equalTo(200));
|
||||||
|
|
|
@ -157,4 +157,30 @@ public class HttpClientLiveTest {
|
||||||
response = instance.execute(new HttpGet(SAMPLE_URL));
|
response = instance.execute(new HttpGet(SAMPLE_URL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tests - cancel request
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void whenRequestIsCanceled_thenCorrect() throws ClientProtocolException, IOException {
|
||||||
|
instance = HttpClients.custom().build();
|
||||||
|
final HttpGet request = new HttpGet(SAMPLE_URL);
|
||||||
|
response = instance.execute(request);
|
||||||
|
|
||||||
|
try {
|
||||||
|
final HttpEntity entity = response.getEntity();
|
||||||
|
|
||||||
|
System.out.println("----------------------------------------");
|
||||||
|
System.out.println(response.getStatusLine());
|
||||||
|
if (entity != null) {
|
||||||
|
System.out.println("Response content length: " + entity.getContentLength());
|
||||||
|
}
|
||||||
|
System.out.println("----------------------------------------");
|
||||||
|
|
||||||
|
// Do not feel like reading the response body
|
||||||
|
// Call abort on the request object
|
||||||
|
request.abort();
|
||||||
|
} finally {
|
||||||
|
response.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.baeldung.jackson.ignore;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
|
|
||||||
|
@JsonInclude(Include.NON_NULL)
|
||||||
|
public class MyDtoIgnoreNull {
|
||||||
|
|
||||||
|
private String stringValue;
|
||||||
|
private int intValue;
|
||||||
|
private boolean booleanValue;
|
||||||
|
|
||||||
|
public MyDtoIgnoreNull() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MyDtoIgnoreNull(final String stringValue, final int intValue, final boolean booleanValue) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.stringValue = stringValue;
|
||||||
|
this.intValue = intValue;
|
||||||
|
this.booleanValue = booleanValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// API
|
||||||
|
|
||||||
|
public String getStringValue() {
|
||||||
|
return stringValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStringValue(final String stringValue) {
|
||||||
|
this.stringValue = stringValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIntValue() {
|
||||||
|
return intValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntValue(final int intValue) {
|
||||||
|
this.intValue = intValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBooleanValue() {
|
||||||
|
return booleanValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBooleanValue(final boolean booleanValue) {
|
||||||
|
this.booleanValue = booleanValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
package org.baeldung.jackson.test;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.baeldung.jackson.ignore.MyDto;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.databind.type.CollectionType;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
|
public class JacksonCollectionDeserializationUnitTest {
|
||||||
|
|
||||||
|
// tests - json to multiple entity
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenJsonArray_whenDeserializingAsArray_thenCorrect() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
final List<MyDto> listOfDtos = Lists.newArrayList(new MyDto("a", 1, true), new MyDto("bc", 3, false));
|
||||||
|
final String jsonArray = mapper.writeValueAsString(listOfDtos);
|
||||||
|
// [{"stringValue":"a","intValue":1,"booleanValue":true},{"stringValue":"bc","intValue":3,"booleanValue":false}]
|
||||||
|
|
||||||
|
final MyDto[] asArray = mapper.readValue(jsonArray, MyDto[].class);
|
||||||
|
assertThat(asArray[0], instanceOf(MyDto.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenJsonArray_whenDeserializingAsListWithNoTypeInfo_thenNotCorrect() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
final List<MyDto> listOfDtos = Lists.newArrayList(new MyDto("a", 1, true), new MyDto("bc", 3, false));
|
||||||
|
final String jsonArray = mapper.writeValueAsString(listOfDtos);
|
||||||
|
// [{"stringValue":"a","intValue":1,"booleanValue":true},{"stringValue":"bc","intValue":3,"booleanValue":false}]
|
||||||
|
|
||||||
|
final List<MyDto> asList = mapper.readValue(jsonArray, List.class);
|
||||||
|
assertThat((Object) asList.get(0), instanceOf(LinkedHashMap.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenJsonArray_whenDeserializingAsListWithTypeReferenceHelp_thenCorrect() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
final List<MyDto> listOfDtos = Lists.newArrayList(new MyDto("a", 1, true), new MyDto("bc", 3, false));
|
||||||
|
final String jsonArray = mapper.writeValueAsString(listOfDtos);
|
||||||
|
// [{"stringValue":"a","intValue":1,"booleanValue":true},{"stringValue":"bc","intValue":3,"booleanValue":false}]
|
||||||
|
|
||||||
|
final List<MyDto> asList = mapper.readValue(jsonArray, new TypeReference<List<MyDto>>() {
|
||||||
|
});
|
||||||
|
assertThat(asList.get(0), instanceOf(MyDto.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenJsonArray_whenDeserializingAsListWithJavaTypeHelp_thenCorrect() throws JsonParseException, JsonMappingException, IOException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
final List<MyDto> listOfDtos = Lists.newArrayList(new MyDto("a", 1, true), new MyDto("bc", 3, false));
|
||||||
|
final String jsonArray = mapper.writeValueAsString(listOfDtos);
|
||||||
|
// [{"stringValue":"a","intValue":1,"booleanValue":true},{"stringValue":"bc","intValue":3,"booleanValue":false}]
|
||||||
|
|
||||||
|
final CollectionType javaType = mapper.getTypeFactory().constructCollectionType(List.class, MyDto.class);
|
||||||
|
final List<MyDto> asList = mapper.readValue(jsonArray, javaType);
|
||||||
|
assertThat(asList.get(0), instanceOf(MyDto.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// a (private) no-args constructor is required (simulate without)
|
|
@ -11,13 +11,16 @@ import org.baeldung.jackson.ignore.MyDto;
|
||||||
import org.baeldung.jackson.ignore.MyDtoFieldNameChanged;
|
import org.baeldung.jackson.ignore.MyDtoFieldNameChanged;
|
||||||
import org.baeldung.jackson.ignore.MyDtoIgnoreField;
|
import org.baeldung.jackson.ignore.MyDtoIgnoreField;
|
||||||
import org.baeldung.jackson.ignore.MyDtoIgnoreFieldByName;
|
import org.baeldung.jackson.ignore.MyDtoIgnoreFieldByName;
|
||||||
|
import org.baeldung.jackson.ignore.MyDtoIgnoreNull;
|
||||||
import org.baeldung.jackson.ignore.MyDtoIncludeNonDefault;
|
import org.baeldung.jackson.ignore.MyDtoIncludeNonDefault;
|
||||||
import org.baeldung.jackson.ignore.MyDtoWithFilter;
|
import org.baeldung.jackson.ignore.MyDtoWithFilter;
|
||||||
import org.baeldung.jackson.ignore.MyMixInForString;
|
import org.baeldung.jackson.ignore.MyMixInForString;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
import com.fasterxml.jackson.core.JsonParseException;
|
import com.fasterxml.jackson.core.JsonParseException;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||||
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
|
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
|
||||||
|
@ -169,6 +172,33 @@ public class JacksonSerializationUnitTest {
|
||||||
System.out.println(dtoAsString);
|
System.out.println(dtoAsString);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenIgnoringNullFieldsOnClass_whenSerializingObjectWithNullField_thenFieldIsIgnroed() throws JsonProcessingException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
final MyDtoIgnoreNull dtoObject = new MyDtoIgnoreNull();
|
||||||
|
|
||||||
|
final String dtoAsString = mapper.writeValueAsString(dtoObject);
|
||||||
|
|
||||||
|
assertThat(dtoAsString, containsString("intValue"));
|
||||||
|
assertThat(dtoAsString, containsString("booleanValue"));
|
||||||
|
assertThat(dtoAsString, not(containsString("stringValue")));
|
||||||
|
System.out.println(dtoAsString);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public final void givenIgnoringNullFieldsGlobally_whenSerializingObjectWithNullField_thenFieldIsIgnroed() throws JsonProcessingException {
|
||||||
|
final ObjectMapper mapper = new ObjectMapper();
|
||||||
|
mapper.setSerializationInclusion(Include.NON_NULL);
|
||||||
|
final MyDto dtoObject = new MyDto();
|
||||||
|
|
||||||
|
final String dtoAsString = mapper.writeValueAsString(dtoObject);
|
||||||
|
|
||||||
|
assertThat(dtoAsString, containsString("intValue"));
|
||||||
|
assertThat(dtoAsString, containsString("booleanValue"));
|
||||||
|
assertThat(dtoAsString, not(containsString("stringValue")));
|
||||||
|
System.out.println(dtoAsString);
|
||||||
|
}
|
||||||
|
|
||||||
// tests - multiple entities to json
|
// tests - multiple entities to json
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue