package com.xiongyingqi.jackson;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiongyingqi.jackson.annotation.IgnoreProperties;
import com.xiongyingqi.jackson.annotation.IgnoreProperty;
import com.xiongyingqi.jackson.helper.ThreadJacksonMixInHolder;
import com.xiongyingqi.jackson.impl.Jackson1JavassistFilterPropertyHandler;
import com.xiongyingqi.jackson.impl.JavassistFilterPropertyHandler;
import com.xiongyingqi.jackson.pojo.Group;
import com.xiongyingqi.jackson.pojo.User;
import com.xiongyingqi.util.Assert;
import com.xiongyingqi.util.EntityHelper;
import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
/**
* Created by 瑛琪<a href="http://xiongyingqi.com">xiongyingqi.com</a> on 2014/6/4 0004.
*/
public class JsonFilterPropertyTest {
@IgnoreProperties(@IgnoreProperty(pojo = User.class, name = "id"))
public Collection<User> listUsers() {
Group group1 = new Group();
group1.setId(1);
group1.setName("分组1");
User user1 = new User();
user1.setId(1);
user1.setGroup(group1);
user1.setName("用户1");
User user2 = new User();
user2.setId(1);
user2.setGroup(group1);
user2.setName("用户1");
User user3 = new User();
user3.setId(1);
user3.setName("用户1");
user3.setGroup(group1);
Group group2 = new Group();
group2.setId(2);
group2.setName("分组2");
User user4 = new User();
user4.setId(4);
user4.setGroup(group2);
user4.setName("用户4");
User user5 = new User();
user5.setId(5);
user5.setGroup(group2);
user5.setName("用户5");
User user6 = new User();
user6.setId(6);
user6.setName("用户6");
user6.setGroup(group2);
Collection<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
return users;
}
@Test
public void jsonTest() throws NoSuchMethodException, JsonProcessingException {
FilterPropertyHandler filterPropertyHandler = new JavassistFilterPropertyHandler(false);
Object object = listUsers();
object = filterPropertyHandler.filterProperties(JsonFilterPropertyTest.class.getMethod("listUsers"), object);
ObjectMapper mapper = ThreadJacksonMixInHolder.builderMapper();
String json = mapper.writeValueAsString(object);
EntityHelper.print(json);
Assert.hasText(json);
}
@Test
public void json1Test() throws NoSuchMethodException, IOException {
FilterPropertyHandler filterPropertyHandler = new Jackson1JavassistFilterPropertyHandler();
Object object = listUsers();
object = filterPropertyHandler.filterProperties(JsonFilterPropertyTest.class.getMethod("listUsers"), object);
org.codehaus.jackson.map.ObjectMapper mapper = ThreadJacksonMixInHolder.builderCodehausMapper();
String json = mapper.writeValueAsString(object);
EntityHelper.print(json);
Assert.hasText(json);
}
}