From da898faac91b831f9a295372c7b46a1f836b6e9f Mon Sep 17 00:00:00 2001 From: Keith Donald Date: Wed, 5 Jan 2011 06:05:34 +0000 Subject: [PATCH] spr7766 --- .../mvc/annotation/Spr7766Controller.java | 20 +++++++++++ .../servlet/mvc/annotation/Spr7766Tests.java | 36 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Controller.java create mode 100644 org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Tests.java diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Controller.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Controller.java new file mode 100644 index 0000000000..128c6fa76b --- /dev/null +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Controller.java @@ -0,0 +1,20 @@ +package org.springframework.web.servlet.mvc.annotation; + +import java.awt.Color; +import java.util.List; + +import org.springframework.stereotype.Controller; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller +public class Spr7766Controller { + + @RequestMapping("/colors") + public void handler(@RequestParam List colors) { + Assert.isTrue(colors.size() == 2); + Assert.isTrue(colors.get(0).equals(Color.WHITE)); + Assert.isTrue(colors.get(1).equals(Color.BLACK)); + } +} diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Tests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Tests.java new file mode 100644 index 0000000000..117f5d70b0 --- /dev/null +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/Spr7766Tests.java @@ -0,0 +1,36 @@ +package org.springframework.web.servlet.mvc.annotation; + +import java.awt.Color; + +import org.junit.Test; +import org.springframework.core.convert.converter.Converter; +import org.springframework.core.convert.support.ConversionServiceFactory; +import org.springframework.core.convert.support.GenericConversionService; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.web.bind.support.ConfigurableWebBindingInitializer; + +public class Spr7766Tests { + + @Test + public void test() throws Exception { + AnnotationMethodHandlerAdapter adapter = new AnnotationMethodHandlerAdapter(); + ConfigurableWebBindingInitializer binder = new ConfigurableWebBindingInitializer(); + GenericConversionService service = ConversionServiceFactory.createDefaultConversionService(); + service.addConverter(new ColorConverter()); + binder.setConversionService(service); + adapter.setWebBindingInitializer(binder); + Spr7766Controller controller = new Spr7766Controller(); + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/colors"); + request.setPathInfo("/colors"); + request.addParameter("colors", "#ffffff,000000"); + MockHttpServletResponse response = new MockHttpServletResponse(); + adapter.handle(request, response, controller); + } + + public class ColorConverter implements Converter { + public Color convert(String source) { if (!source.startsWith("#")) source = "#" + source; return Color.decode(source); } + } + +}