Polishing
This commit is contained in:
parent
74ad2081aa
commit
53aab24690
|
@ -48,8 +48,13 @@ import org.springframework.util.Assert;
|
||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enhances {@link Configuration} classes by generating a CGLIB subclass capable of
|
* Enhances {@link Configuration} classes by generating a CGLIB subclass which
|
||||||
* interacting with the Spring container to respect bean semantics.
|
* interacts with the Spring container to respect bean scoping semantics for
|
||||||
|
* {@code @Bean} methods. Each such {@code @Bean} method will be overridden in
|
||||||
|
* the generated subclass, only delegating to the actual {@code @Bean} method
|
||||||
|
* implementation if the container actually requests the construction of a new
|
||||||
|
* instance. Otherwise, a call to such an {@code @Bean} method serves as a
|
||||||
|
* reference back to the container, obtaining the corresponding bean by name.
|
||||||
*
|
*
|
||||||
* @author Chris Beams
|
* @author Chris Beams
|
||||||
* @author Juergen Hoeller
|
* @author Juergen Hoeller
|
||||||
|
|
|
@ -39,7 +39,7 @@ import org.springframework.web.servlet.view.AbstractView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring MVC {@link View} that renders JSON content by serializing the model for the current request
|
* Spring MVC {@link View} that renders JSON content by serializing the model for the current request
|
||||||
* using <a href="http://jackson.codehaus.org/">Jackson's</a> {@link ObjectMapper}.
|
* using <a href="http://jackson.codehaus.org/">Jackson 1.x's</a> {@link ObjectMapper}.
|
||||||
*
|
*
|
||||||
* <p>By default, the entire contents of the model map (with the exception of framework-specific classes)
|
* <p>By default, the entire contents of the model map (with the exception of framework-specific classes)
|
||||||
* will be encoded as JSON. If the model contains only one key, you can have it extracted encoded as JSON
|
* will be encoded as JSON. If the model contains only one key, you can have it extracted encoded as JSON
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2013 the original author or authors.
|
* Copyright 2002-2014 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -39,6 +39,7 @@ import org.junit.Test;
|
||||||
import org.mozilla.javascript.Context;
|
import org.mozilla.javascript.Context;
|
||||||
import org.mozilla.javascript.ContextFactory;
|
import org.mozilla.javascript.ContextFactory;
|
||||||
import org.mozilla.javascript.ScriptableObject;
|
import org.mozilla.javascript.ScriptableObject;
|
||||||
|
|
||||||
import org.springframework.mock.web.test.MockHttpServletRequest;
|
import org.springframework.mock.web.test.MockHttpServletRequest;
|
||||||
import org.springframework.mock.web.test.MockHttpServletResponse;
|
import org.springframework.mock.web.test.MockHttpServletResponse;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
|
@ -68,10 +69,8 @@ public class MappingJacksonJsonViewTests {
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
request = new MockHttpServletRequest();
|
request = new MockHttpServletRequest();
|
||||||
response = new MockHttpServletResponse();
|
response = new MockHttpServletResponse();
|
||||||
|
|
||||||
jsContext = ContextFactory.getGlobal().enterContext();
|
jsContext = ContextFactory.getGlobal().enterContext();
|
||||||
jsScope = jsContext.initStandardObjects();
|
jsScope = jsContext.initStandardObjects();
|
||||||
|
|
||||||
view = new MappingJacksonJsonView();
|
view = new MappingJacksonJsonView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,13 +92,11 @@ public class MappingJacksonJsonViewTests {
|
||||||
assertEquals("no-cache", response.getHeader("Pragma"));
|
assertEquals("no-cache", response.getHeader("Pragma"));
|
||||||
assertEquals("no-cache, no-store, max-age=0", response.getHeader("Cache-Control"));
|
assertEquals("no-cache, no-store, max-age=0", response.getHeader("Cache-Control"));
|
||||||
assertNotNull(response.getHeader("Expires"));
|
assertNotNull(response.getHeader("Expires"));
|
||||||
|
|
||||||
assertEquals(MappingJacksonJsonView.DEFAULT_CONTENT_TYPE, response.getContentType());
|
assertEquals(MappingJacksonJsonView.DEFAULT_CONTENT_TYPE, response.getContentType());
|
||||||
|
|
||||||
String jsonResult = response.getContentAsString();
|
String jsonResult = response.getContentAsString();
|
||||||
assertTrue(jsonResult.length() > 0);
|
assertTrue(jsonResult.length() > 0);
|
||||||
assertEquals(jsonResult.length(), response.getContentLength());
|
assertEquals(jsonResult.length(), response.getContentLength());
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +107,6 @@ public class MappingJacksonJsonViewTests {
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
model.put("bindingResult", mock(BindingResult.class, "binding_result"));
|
model.put("bindingResult", mock(BindingResult.class, "binding_result"));
|
||||||
model.put("foo", "bar");
|
model.put("foo", "bar");
|
||||||
|
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
assertNull(response.getHeader("Pragma"));
|
assertNull(response.getHeader("Pragma"));
|
||||||
|
@ -130,26 +126,22 @@ public class MappingJacksonJsonViewTests {
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
model.put("bindingResult", mock(BindingResult.class, "binding_result"));
|
model.put("bindingResult", mock(BindingResult.class, "binding_result"));
|
||||||
model.put("foo", bean);
|
model.put("foo", bean);
|
||||||
|
|
||||||
view.setUpdateContentLength(true);
|
view.setUpdateContentLength(true);
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
assertTrue(response.getContentAsString().length() > 0);
|
assertTrue(response.getContentAsString().length() > 0);
|
||||||
assertEquals(response.getContentAsString().length(), response.getContentLength());
|
assertEquals(response.getContentAsString().length(), response.getContentLength());
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void renderWithPrettyPrint() throws Exception {
|
public void renderWithPrettyPrint() throws Exception {
|
||||||
ModelMap model = new ModelMap("foo", new TestBeanSimple());
|
ModelMap model = new ModelMap("foo", new TestBeanSimple());
|
||||||
|
|
||||||
view.setPrettyPrint(true);
|
view.setPrettyPrint(true);
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
String result = response.getContentAsString().replace("\r\n", "\n");
|
String result = response.getContentAsString().replace("\r\n", "\n");
|
||||||
assertTrue("Pretty printing not applied:\n" + result, result.startsWith("{\n \"foo\" : {\n "));
|
assertTrue("Pretty printing not applied:\n" + result, result.startsWith("{\n \"foo\" : {\n "));
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,12 +164,10 @@ public class MappingJacksonJsonViewTests {
|
||||||
Object bean = new TestBeanSimpleAnnotated();
|
Object bean = new TestBeanSimpleAnnotated();
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
model.put("foo", bean);
|
model.put("foo", bean);
|
||||||
|
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
assertTrue(response.getContentAsString().length() > 0);
|
assertTrue(response.getContentAsString().length() > 0);
|
||||||
assertEquals("{\"foo\":{\"testBeanSimple\":\"custom\"}}", response.getContentAsString());
|
assertEquals("{\"foo\":{\"testBeanSimple\":\"custom\"}}", response.getContentAsString());
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,13 +182,11 @@ public class MappingJacksonJsonViewTests {
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
model.put("foo", bean);
|
model.put("foo", bean);
|
||||||
model.put("bar", new TestChildBean());
|
model.put("bar", new TestChildBean());
|
||||||
|
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
String result = response.getContentAsString();
|
String result = response.getContentAsString();
|
||||||
assertTrue(result.length() > 0);
|
assertTrue(result.length() > 0);
|
||||||
assertTrue(result.contains("\"foo\":{\"testBeanSimple\":\"custom\"}"));
|
assertTrue(result.contains("\"foo\":{\"testBeanSimple\":\"custom\"}"));
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,14 +202,12 @@ public class MappingJacksonJsonViewTests {
|
||||||
model.put("foo", "foo");
|
model.put("foo", "foo");
|
||||||
model.put("bar", "bar");
|
model.put("bar", "bar");
|
||||||
model.put("baz", "baz");
|
model.put("baz", "baz");
|
||||||
|
|
||||||
view.render(model, request, response);
|
view.render(model, request, response);
|
||||||
|
|
||||||
String result = response.getContentAsString();
|
String result = response.getContentAsString();
|
||||||
assertTrue(result.length() > 0);
|
assertTrue(result.length() > 0);
|
||||||
assertTrue(result.contains("\"foo\":\"foo\""));
|
assertTrue(result.contains("\"foo\":\"foo\""));
|
||||||
assertTrue(result.contains("\"baz\":\"baz\""));
|
assertTrue(result.contains("\"baz\":\"baz\""));
|
||||||
|
|
||||||
validateResult();
|
validateResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +218,6 @@ public class MappingJacksonJsonViewTests {
|
||||||
Map<String, Object> model = new HashMap<String, Object>();
|
Map<String, Object> model = new HashMap<String, Object>();
|
||||||
TestBeanSimple bean = new TestBeanSimple();
|
TestBeanSimple bean = new TestBeanSimple();
|
||||||
model.put("foo", bean);
|
model.put("foo", bean);
|
||||||
|
|
||||||
Object actual = view.filterModel(model);
|
Object actual = view.filterModel(model);
|
||||||
|
|
||||||
assertSame(bean, actual);
|
assertSame(bean, actual);
|
||||||
|
@ -295,7 +280,7 @@ public class MappingJacksonJsonViewTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@JsonSerialize(using=TestBeanSimpleSerializer.class)
|
@JsonSerialize(using = TestBeanSimpleSerializer.class)
|
||||||
public static class TestBeanSimpleAnnotated extends TestBeanSimple {
|
public static class TestBeanSimpleAnnotated extends TestBeanSimple {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,9 +314,7 @@ public class MappingJacksonJsonViewTests {
|
||||||
public static class TestBeanSimpleSerializer extends JsonSerializer<Object> {
|
public static class TestBeanSimpleSerializer extends JsonSerializer<Object> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider)
|
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
|
||||||
throws IOException {
|
|
||||||
|
|
||||||
jgen.writeStartObject();
|
jgen.writeStartObject();
|
||||||
jgen.writeFieldName("testBeanSimple");
|
jgen.writeFieldName("testBeanSimple");
|
||||||
jgen.writeString("custom");
|
jgen.writeString("custom");
|
||||||
|
@ -348,7 +331,9 @@ public class MappingJacksonJsonViewTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JsonSerializer<Object> createSerializer(SerializationConfig config, JavaType baseType, BeanProperty property) throws JsonMappingException {
|
public JsonSerializer<Object> createSerializer(SerializationConfig config, JavaType baseType, BeanProperty property)
|
||||||
|
throws JsonMappingException {
|
||||||
|
|
||||||
if (baseType.getRawClass() == TestBeanSimple.class) {
|
if (baseType.getRawClass() == TestBeanSimple.class) {
|
||||||
return new TestBeanSimpleSerializer();
|
return new TestBeanSimpleSerializer();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue