Consistent use of Charset.forName over JDK 7 StandardCharsets in 4.x line

(cherry picked from commit 2a82b8f)
This commit is contained in:
Juergen Hoeller
2016-08-26 13:11:39 +02:00
parent f4037bf522
commit d03afeb296
5 changed files with 93 additions and 91 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 the original author or authors.
* Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,7 +21,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -371,6 +370,7 @@ public class MvcNamespaceTests {
request.setMethod("GET");
HandlerExecutionChain chain = mapping.getHandler(request);
assertNotNull(chain);
assertTrue(chain.getHandler() instanceof ResourceHttpRequestHandler);
MockHttpServletResponse response = new MockHttpServletResponse();
@@ -813,7 +813,7 @@ public class MvcNamespaceTests {
assertNotNull(scriptTemplateConfigurer);
assertEquals("render", scriptTemplateConfigurer.getRenderFunction());
assertEquals(MediaType.TEXT_PLAIN_VALUE, scriptTemplateConfigurer.getContentType());
assertEquals(StandardCharsets.ISO_8859_1, scriptTemplateConfigurer.getCharset());
assertEquals("ISO-8859-1", scriptTemplateConfigurer.getCharset().name());
assertEquals("classpath:", scriptTemplateConfigurer.getResourceLoaderPath());
assertFalse(scriptTemplateConfigurer.isSharedEngine());
String[] scripts = { "org/springframework/web/servlet/view/script/nashorn/render.js" };
@@ -945,18 +945,21 @@ public class MvcNamespaceTests {
public @interface IsoDate {
}
@NumberFormat(style = NumberFormat.Style.PERCENT)
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface PercentNumber {
}
@Validated(MyGroup.class)
@Target({ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyValid {
}
@Controller
public static class TestController {
@@ -967,13 +970,16 @@ public class MvcNamespaceTests {
private boolean recordedValidationError;
@RequestMapping
public void testBind(@RequestParam @IsoDate Date date, @RequestParam(required = false) @PercentNumber Double percent, @MyValid TestBean bean, BindingResult result) {
public void testBind(@RequestParam @IsoDate Date date,
@RequestParam(required = false) @PercentNumber Double percent,
@MyValid TestBean bean, BindingResult result) {
this.date = date;
this.percent = percent;
this.recordedValidationError = (result.getErrorCount() == 1);
}
}
public static class TestValidator implements Validator {
boolean validatorInvoked;
@@ -989,10 +995,12 @@ public class MvcNamespaceTests {
}
}
@Retention(RetentionPolicy.RUNTIME)
public @interface MyGroup {
}
private static class TestBean {
@NotNull(groups = MyGroup.class)
@@ -1009,6 +1017,7 @@ public class MvcNamespaceTests {
}
}
private static class TestMockServletContext extends MockServletContext {
@Override
@@ -1022,12 +1031,15 @@ public class MvcNamespaceTests {
}
}
public static class TestCallableProcessingInterceptor extends CallableProcessingInterceptorAdapter {
}
public static class TestDeferredResultProcessingInterceptor extends DeferredResultProcessingInterceptorAdapter {
}
public static class TestPathMatcher implements PathMatcher {
@Override
@@ -1066,9 +1078,11 @@ public class MvcNamespaceTests {
}
}
public static class TestPathHelper extends UrlPathHelper {
}
public static class TestCacheManager implements CacheManager {
@Override

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 the original author or authors.
* Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
package org.springframework.web.servlet.view.script;
import java.net.URLClassLoader;
import java.nio.charset.StandardCharsets;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -47,7 +47,6 @@ import org.springframework.web.servlet.DispatcherServlet;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.mockito.BDDMockito.*;
import static org.mockito.Mockito.mock;
/**
* Unit tests for {@link ScriptTemplateView}.
@@ -56,14 +55,15 @@ import static org.mockito.Mockito.mock;
*/
public class ScriptTemplateViewTests {
private static final String RESOURCE_LOADER_PATH = "classpath:org/springframework/web/servlet/view/script/";
private ScriptTemplateView view;
private ScriptTemplateConfigurer configurer;
private StaticWebApplicationContext wac;
private static final String RESOURCE_LOADER_PATH = "classpath:org/springframework/web/servlet/view/script/";
@Before
public void setup() {
@@ -74,16 +74,16 @@ public class ScriptTemplateViewTests {
this.view.setUrl(RESOURCE_LOADER_PATH + "empty.txt");
}
@Test
public void missingScriptTemplateConfig() throws Exception {
try {
this.view.setApplicationContext(new StaticApplicationContext());
fail("Should have thrown ApplicationContextException");
}
catch (ApplicationContextException ex) {
assertTrue(ex.getMessage().contains("ScriptTemplateConfig"));
return;
}
fail();
}
@Test
@@ -93,7 +93,7 @@ public class ScriptTemplateViewTests {
this.configurer.setRenderObject("Template");
this.configurer.setRenderFunction("render");
this.configurer.setContentType(MediaType.TEXT_PLAIN_VALUE);
this.configurer.setCharset(StandardCharsets.ISO_8859_1);
this.configurer.setCharset(Charset.forName("ISO-8859-1"));
this.configurer.setSharedEngine(true);
DirectFieldAccessor accessor = new DirectFieldAccessor(this.view);
@@ -102,7 +102,7 @@ public class ScriptTemplateViewTests {
assertEquals("Template", accessor.getPropertyValue("renderObject"));
assertEquals("render", accessor.getPropertyValue("renderFunction"));
assertEquals(MediaType.TEXT_PLAIN_VALUE, accessor.getPropertyValue("contentType"));
assertEquals(StandardCharsets.ISO_8859_1, accessor.getPropertyValue("charset"));
assertEquals(Charset.forName("ISO-8859-1"), accessor.getPropertyValue("charset"));
assertEquals(true, accessor.getPropertyValue("sharedEngine"));
}
@@ -119,7 +119,7 @@ public class ScriptTemplateViewTests {
assertEquals("Template", accessor.getPropertyValue("renderObject"));
assertEquals("render", accessor.getPropertyValue("renderFunction"));
assertEquals(MediaType.TEXT_HTML_VALUE, accessor.getPropertyValue("contentType"));
assertEquals(StandardCharsets.UTF_8, accessor.getPropertyValue("charset"));
assertEquals(Charset.forName("UTF-8"), accessor.getPropertyValue("charset"));
}
@Test
@@ -135,7 +135,7 @@ public class ScriptTemplateViewTests {
DirectFieldAccessor accessor = new DirectFieldAccessor(this.view);
assertNull(accessor.getPropertyValue("renderObject"));
assertEquals("render", accessor.getPropertyValue("renderFunction"));
assertEquals(StandardCharsets.UTF_8, accessor.getPropertyValue("charset"));
assertEquals(Charset.forName("UTF-8"), accessor.getPropertyValue("charset"));
}
@Test
@@ -147,11 +147,11 @@ public class ScriptTemplateViewTests {
this.view.setApplicationContext(this.wac);
ExecutorService executor = Executors.newFixedThreadPool(4);
List<Future<Boolean>> results = new ArrayList<>();
for(int i = 0; i < iterations; i++) {
for (int i = 0; i < iterations; i++) {
results.add(executor.submit(() -> view.getEngine() != null));
}
assertEquals(iterations, results.size());
for(int i = 0; i < iterations; i++) {
for (int i = 0; i < iterations; i++) {
assertTrue(results.get(i).get());
}
executor.shutdown();
@@ -165,7 +165,6 @@ public class ScriptTemplateViewTests {
}
catch (IllegalArgumentException ex) {
assertThat(ex.getMessage(), containsString("instance"));
return;
}
}
@@ -206,9 +205,7 @@ public class ScriptTemplateViewTests {
}
catch (IllegalArgumentException ex) {
assertThat(ex.getMessage(), containsString("sharedEngine"));
return;
}
fail();
}
@Test
@@ -223,6 +220,7 @@ public class ScriptTemplateViewTests {
assertThat(Arrays.asList(urlClassLoader.getURLs()), Matchers.hasSize(1));
assertThat(Arrays.asList(urlClassLoader.getURLs()).get(0).toString(),
Matchers.endsWith("org/springframework/web/servlet/view/script/"));
this.view.setResourceLoaderPath(RESOURCE_LOADER_PATH + ",classpath:org/springframework/web/servlet/view/");
classLoader = this.view.createClassLoader();
assertNotNull(classLoader);
@@ -248,19 +246,19 @@ public class ScriptTemplateViewTests {
this.view.render(model, request, response);
assertEquals(MediaType.TEXT_HTML_VALUE + ";charset=" +
StandardCharsets.UTF_8, response.getHeader(HttpHeaders.CONTENT_TYPE));
Charset.forName("UTF-8"), response.getHeader(HttpHeaders.CONTENT_TYPE));
response = new MockHttpServletResponse();
this.view.setContentType(MediaType.TEXT_PLAIN_VALUE);
this.view.render(model, request, response);
assertEquals(MediaType.TEXT_PLAIN_VALUE + ";charset=" +
StandardCharsets.UTF_8, response.getHeader(HttpHeaders.CONTENT_TYPE));
Charset.forName("UTF-8"), response.getHeader(HttpHeaders.CONTENT_TYPE));
response = new MockHttpServletResponse();
this.view.setCharset(StandardCharsets.ISO_8859_1);
this.view.setCharset(Charset.forName("ISO-8859-1"));
this.view.render(model, request, response);
assertEquals(MediaType.TEXT_PLAIN_VALUE + ";charset=" +
StandardCharsets.ISO_8859_1, response.getHeader(HttpHeaders.CONTENT_TYPE));
Charset.forName("ISO-8859-1"), response.getHeader(HttpHeaders.CONTENT_TYPE));
}