You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by bl...@apache.org on 2010/01/28 05:07:53 UTC

svn commit: r903953 - in /incubator/wink/trunk/wink-server/src: main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java

Author: bluk
Date: Thu Jan 28 04:07:51 2010
New Revision: 903953

URL: http://svn.apache.org/viewvc?rev=903953&view=rev
Log:
Use correct response class when populating Content-Type

See [WINK-247]

Modified:
    incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java
    incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java

Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java?rev=903953&r1=903952&r2=903953&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/PopulateResponseMediaTypeHandler.java Thu Jan 28 04:07:51 2010
@@ -59,6 +59,10 @@
 
         if (result instanceof Response) {
             Response response = (Response)result;
+            if (response.getEntity() == null) {
+                // no entity so no need to set Content-Type
+                return;
+            }
 
             Object first = response.getMetadata().getFirst(HttpHeaders.CONTENT_TYPE);
 
@@ -81,9 +85,16 @@
                 logger.debug("Determining Content-Type from @Produces on method: {}", producedMime);
             }
             if (producedMime == null || producedMime.isEmpty()) {
-                producedMime =
-                    context.getAttribute(ProvidersRegistry.class)
-                        .getMessageBodyWriterMediaTypes(result.getClass());
+                if (result instanceof Response) {
+                    Response response = (Response)result;
+                    producedMime =
+                        context.getAttribute(ProvidersRegistry.class)
+                            .getMessageBodyWriterMediaTypes(response.getEntity().getClass());
+                } else {
+                    producedMime =
+                        context.getAttribute(ProvidersRegistry.class)
+                            .getMessageBodyWriterMediaTypes(result.getClass());
+                }
                 /*
                  * This is to inform the application developer that they should
                  * specify the Content-Type.

Modified: incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java?rev=903953&r1=903952&r2=903953&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java (original)
+++ incubator/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/CommonAcceptHeaderTest.java Thu Jan 28 04:07:51 2010
@@ -92,47 +92,28 @@
     public void testEmptyStringAcceptHeader() throws Exception {
         MockHttpServletRequest request =
             MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "");
-        try {
-            invoke(request);
-            fail();
-        } catch (WebApplicationException e) {
-            assertEquals(400, e.getResponse().getStatus());
-        }
+        MockHttpServletResponse response = invoke(request);
+        assertEquals(400, response.getStatus());
+        
         request = MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "      ");
-        try {
-            invoke(request);
-            fail();
-        } catch (WebApplicationException e) {
-            assertEquals(400, e.getResponse().getStatus());
-        }
+        response = invoke(request);
+        assertEquals(400, response.getStatus());
     }
 
     public void testIllegalStringAcceptHeader() throws Exception {
         MockHttpServletRequest request =
             MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "text/");
-        try {
-            invoke(request);
-            fail();
-        } catch (WebApplicationException e) {
-            assertEquals(400, e.getResponse().getStatus());
-        }
+        MockHttpServletResponse response = invoke(request);
+        assertEquals(400, response.getStatus());
 
         request =
             MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "application/");
-        try {
-            invoke(request);
-            fail();
-        } catch (WebApplicationException e) {
-            assertEquals(400, e.getResponse().getStatus());
-        }
-
-        try {
-            request =
-                MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "/xml");
-            invoke(request);
-        } catch (WebApplicationException e) {
-            assertEquals(400, e.getResponse().getStatus());
-        }
+        response = invoke(request);
+        assertEquals(400, response.getStatus());
+
+        request = MockRequestConstructor.constructMockRequest("GET", "/countaccepttypes", "/xml");
+        response = invoke(request);
+        assertEquals(400, response.getStatus());
 
         /*
          * while the response type isn't there
@@ -142,7 +123,7 @@
                 .constructMockRequest("GET",
                                       "/onlytext",
                                       "         text              / plain                   ");
-        MockHttpServletResponse response = invoke(request);
+        response = invoke(request);
         assertEquals(406, response.getStatus());
         assertEquals("", response.getContentAsString());