Skip to content

Commit

Permalink
Add a unit test for #921
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Dec 1, 2015
1 parent f19875e commit 53fb51f
Showing 1 changed file with 102 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package com.fasterxml.jackson.failing;

import java.util.List;

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

public class BuilderDeserializationTest921
extends BaseMapTest
{
public static class MyPOJO {
public String x;
public String y;

@JsonCreator
public MyPOJO(@JsonProperty("x") String x, @JsonProperty("y") String y) {
this.x = x;
this.y = y;
}
}

@JsonDeserialize(builder = MyGenericPOJO.Builder.class)
public static class MyGenericPOJO<T> {
private List<T> data;

private MyGenericPOJO(List<T> d) {
data = d;
}

public List<T> getData() {
return data;
}

public static class Builder<T> {
private List<T> data;

public Builder<T> withData(List<T> d) {
data = d;
return this;
}

public MyGenericPOJO<T> build() {
return new MyGenericPOJO<T>(data);
}
}
}

public static class MyGenericPOJOWithCreator<T> {
private List<T> data;

private MyGenericPOJOWithCreator(List<T> d) {
data = d;
}

@JsonCreator
public static <T> MyGenericPOJOWithCreator<T> create(@JsonProperty("data") List<T> data) {
return new MyGenericPOJOWithCreator.Builder<T>().withData(data).build();
}

public List<T> getData() {
return data;
}

public static class Builder<T> {
private List<T> data;

public Builder<T> withData(List<T> d) {
data = d;
return this;
}

public MyGenericPOJOWithCreator<T> build() {
return new MyGenericPOJOWithCreator<T>(data);
}
}
}

public void testWithBuilder() throws Exception {
final ObjectMapper mapper = new ObjectMapper();
final String json = aposToQuotes("{ 'data': [ { 'x': 'x', 'y': 'y' } ] }");
final MyGenericPOJO<MyPOJO> deserialized =
mapper.readValue(json, new TypeReference<MyGenericPOJO<MyPOJO>>() {});
assertEquals(1, deserialized.data.size());
Object ob = deserialized.data.get(0);
assertNotNull(ob);
assertEquals(MyPOJO.class, ob.getClass());
}

public void testWithCreator() throws Exception {
final ObjectMapper mapper = new ObjectMapper();
final String json = aposToQuotes("{ 'data': [ { 'x': 'x', 'y': 'y' } ] }");
final MyGenericPOJOWithCreator<MyPOJO> deserialized =
mapper.readValue(json,
new TypeReference<MyGenericPOJOWithCreator<MyPOJO>>() {});
assertEquals(1, deserialized.data.size());
Object ob = deserialized.data.get(0);
assertNotNull(ob);
assertEquals(MyPOJO.class, ob.getClass());
}
}

0 comments on commit 53fb51f

Please sign in to comment.