Browse Source

Improve controllers

Let spring handle serializing and writing the response body.
Ryan Tenney 12 years ago
parent
commit
88255b96d8

+ 8 - 16
spring/src/main/java/hello/web/HelloDbController.java

@@ -19,18 +19,20 @@ import org.springframework.stereotype.*;
 import org.springframework.web.bind.annotation.*;
 
 @Controller
-public class HelloDbController 
+public class HelloDbController
 {
+
   private static final int    DB_ROWS                = 10000;
 
-  @RequestMapping(value = "/db")
-  public Object index(HttpServletRequest request, HttpServletResponse response, Integer queries)
+  @RequestMapping(value = "/db", produces = "application/json")
+  @ResponseBody
+  public World[] index(Integer queries)
   {
     if (queries == null)
     {
       queries = 1;
     }
-    
+
     final World[] worlds = new World[queries];
     final Random random = ThreadLocalRandom.current();
     final Session session = HibernateUtil.getSessionFactory().openSession();
@@ -41,17 +43,7 @@ public class HelloDbController
     }
 
     session.close();
-    
-    try 
-    {
-      new MappingJackson2HttpMessageConverter().write(
-          worlds, MediaType.APPLICATION_JSON, new ServletServerHttpResponse(response));
-    } 
-    catch (IOException e) 
-    {
-      // do nothing
-    }
-    
-    return null;
+
+    return worlds;
   }
 }

+ 10 - 17
spring/src/main/java/hello/web/HelloJsonController.java

@@ -11,27 +11,20 @@ import org.springframework.http.converter.json.*;
 import org.springframework.http.server.*;
 import org.springframework.stereotype.*;
 import org.springframework.web.bind.annotation.*;
- 
+
 /**
  * Handles requests for the application home page.
  */
 @Controller
-public class HelloJsonController {
- 
-  @RequestMapping(value = "/json")
-  public Object json(HttpServletResponse response) 
-  {
-    Map<String, String> json = new HashMap<String, String>();
-    json.put("message", "Hello, world");
+public class HelloJsonController
+{
 
-    try {
-      new MappingJackson2HttpMessageConverter().write(
-          json, MediaType.APPLICATION_JSON, new ServletServerHttpResponse(response));
-    } catch (HttpMessageNotWritableException e) {
-        e.printStackTrace();
-    } catch (IOException e) {
-        e.printStackTrace();
-    }
-    return null;
+  @RequestMapping(value = "/json", produces = "application/json")
+  @ResponseBody
+  public Map<String, String> json()
+  {
+    Map<String, String> map = new HashMap<String, String>();
+    map.put("message", "Hello, world");
+    return map;
   }
 }