/src/test/java/com/alibaba/json/bvt/support/spring/FastJsonHttpMessageConverterTest.java
https://github.com/alibaba/fastjson · Java · 201 lines · 147 code · 52 blank · 2 comment · 3 complexity · 81bd6ea74711b6813ac6f73c3e6b9144 MD5 · raw file
- package com.alibaba.json.bvt.support.spring;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Method;
- import java.nio.charset.Charset;
- import java.util.Arrays;
- import java.util.Collections;
- import junit.framework.TestCase;
- import org.junit.Assert;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.HttpInputMessage;
- import org.springframework.http.HttpOutputMessage;
- import org.springframework.http.MediaType;
- import com.alibaba.fastjson.serializer.SerializeFilter;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.alibaba.fastjson.serializer.ValueFilter;
- import com.alibaba.fastjson.support.config.FastJsonConfig;
- import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
- public class FastJsonHttpMessageConverterTest extends TestCase {
- @SuppressWarnings("deprecation")
- public void test_read() throws Exception {
- FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
- converter.setCharset(Charset.forName("UTF-8"));
- Assert.assertEquals(Charset.forName("UTF-8"), converter.getCharset());
- converter.setFeatures(SerializerFeature.BrowserCompatible);
- Assert.assertEquals(1, converter.getFeatures().length);
- Assert.assertEquals(SerializerFeature.BrowserCompatible,
- converter.getFeatures()[0]);
- Assert.assertNull(converter.getDateFormat());
- converter.setDateFormat("yyyyMMdd");
- converter.setFilters(serializeFilter);
- Assert.assertEquals(1, converter.getFilters().length);
- Assert.assertEquals(serializeFilter, converter.getFilters()[0]);
- converter.addSerializeFilter(serializeFilter);
- Assert.assertEquals(2, converter.getFilters().length);
- converter.addSerializeFilter(null);
- converter.setSupportedMediaTypes(Arrays
- .asList(new MediaType[] { MediaType.APPLICATION_JSON_UTF8 }));
- Assert.assertEquals(1, converter.getSupportedMediaTypes().size());
- Method method = FastJsonHttpMessageConverter.class.getDeclaredMethod(
- "supports", Class.class);
- method.setAccessible(true);
- method.invoke(converter, int.class);
- HttpInputMessage input = new HttpInputMessage() {
- public HttpHeaders getHeaders() {
- // TODO Auto-generated method stub
- return null;
- }
- public InputStream getBody() throws IOException {
- return new ByteArrayInputStream("{\"id\":123}".getBytes(Charset
- .forName("UTF-8")));
- }
- };
- VO vo = (VO) converter.read(VO.class, input);
- Assert.assertEquals(123, vo.getId());
- final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
- HttpOutputMessage out = new HttpOutputMessage() {
- public HttpHeaders getHeaders() {
- return new HttpHeaders();
- }
- public OutputStream getBody() throws IOException {
- return byteOut;
- }
- };
- converter.write(vo, MediaType.TEXT_PLAIN, out);
- byte[] bytes = byteOut.toByteArray();
- Assert.assertEquals("{\"id\":\"123\"}", new String(bytes, "UTF-8"));
- }
- public void test_1() throws Exception {
- FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
- Assert.assertNotNull(converter.getFastJsonConfig());
- converter.setFastJsonConfig(new FastJsonConfig());
- converter.canRead(VO.class, MediaType.APPLICATION_JSON_UTF8);
- converter.canWrite(VO.class, MediaType.APPLICATION_JSON_UTF8);
- converter.canRead(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);
- converter.canWrite(VO.class, VO.class, MediaType.APPLICATION_JSON_UTF8);
- HttpInputMessage input = new HttpInputMessage() {
- public HttpHeaders getHeaders() {
- // TODO Auto-generated method stub
- return null;
- }
- public InputStream getBody() throws IOException {
- return new ByteArrayInputStream("{\"id\":123}".getBytes(Charset
- .forName("UTF-8")));
- }
- };
- VO vo = (VO) converter.read(VO.class, VO.class, input);
- Assert.assertEquals(123, vo.getId());
- final ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
- HttpOutputMessage out = new HttpOutputMessage() {
- public HttpHeaders getHeaders() {
- return new HttpHeaders();
- }
- public OutputStream getBody() throws IOException {
- return byteOut;
- }
- };
- converter.write(vo, VO.class, MediaType.TEXT_PLAIN, out);
- byte[] bytes = byteOut.toByteArray();
- Assert.assertEquals("{\"id\":123}", new String(bytes, "UTF-8"));
- converter.setSupportedMediaTypes(Collections
- .singletonList(MediaType.APPLICATION_JSON));
- converter.write(vo, VO.class, null, out);
- converter.write(vo, VO.class, MediaType.ALL, out);
- HttpOutputMessage out2 = new HttpOutputMessage() {
- public HttpHeaders getHeaders() {
- return new HttpHeaders() {
- private static final long serialVersionUID = 1L;
- @Override
- public MediaType getContentType() {
- return MediaType.APPLICATION_JSON;
- }
- @Override
- public long getContentLength() {
- return 1;
- }
- };
- }
- public OutputStream getBody() throws IOException {
- return byteOut;
- }
- };
- converter.write(vo, VO.class, MediaType.ALL, out2);
- }
- private SerializeFilter serializeFilter = new ValueFilter() {
- @Override
- public Object process(Object object, String name, Object value) {
- if (value == null) {
- return "";
- }
- if (value instanceof Number) {
- return String.valueOf(value);
- }
- return value;
- }
- };
- public static class VO {
- private int id;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- }
- }