You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by lr...@apache.org on 2013/04/24 18:36:40 UTC

svn commit: r1471518 - in /wink/trunk/wink-server/src: main/java/org/apache/wink/server/internal/handlers/ test/java/org/apache/wink/server/internal/activation/ test/java/org/apache/wink/server/serviceability/

Author: lresende
Date: Wed Apr 24 16:36:39 2013
New Revision: 1471518

URL: http://svn.apache.org/r1471518
Log:
WINK-379 - Return HttpStatus.NOT_ACCEPTABLE (406) if no methods support one of the acceptable response entity body media types

Added:
    wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter406Test.java
      - copied, changed from r1467159, wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter500Test.java
    wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter406Test.java
      - copied, changed from r1467159, wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter500Test.java
Removed:
    wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter500Test.java
    wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter500Test.java
Modified:
    wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/FlushResultHandler.java
    wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/activation/ActivationDataContentHandlerTest.java

Modified: wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/FlushResultHandler.java
URL: http://svn.apache.org/viewvc/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/FlushResultHandler.java?rev=1471518&r1=1471517&r2=1471518&view=diff
==============================================================================
--- wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/FlushResultHandler.java (original)
+++ wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/FlushResultHandler.java Wed Apr 24 16:36:39 2013
@@ -43,6 +43,7 @@ import javax.ws.rs.ext.Providers;
 import javax.ws.rs.ext.RuntimeDelegate;
 import javax.ws.rs.ext.RuntimeDelegate.HeaderDelegate;
 
+import org.apache.wink.common.http.HttpStatus;
 import org.apache.wink.common.internal.MultivaluedMapImpl;
 import org.apache.wink.common.internal.i18n.Messages;
 import org.apache.wink.common.internal.runtime.RuntimeContextTLS;
@@ -232,7 +233,11 @@ public class FlushResultHandler extends 
                 logger.error(Messages.getMessage("noWriterOrDataSourceProvider", entity.getClass() //$NON-NLS-1$
                     .getName(), responseMediaType));
             }
-            throw new WebApplicationException(500);
+            // WINK-379 - From the spec :
+            // If no methods support one of the acceptable response entity body media types
+            // an implementation MUST generate a WebApplicationException with a not acceptable
+            // response (HTTP 406 status) and no entity
+            throw new WebApplicationException(HttpStatus.NOT_ACCEPTABLE.getCode());
         }
 
         if (logger.isTraceEnabled()) {

Modified: wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/activation/ActivationDataContentHandlerTest.java
URL: http://svn.apache.org/viewvc/wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/activation/ActivationDataContentHandlerTest.java?rev=1471518&r1=1471517&r2=1471518&view=diff
==============================================================================
--- wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/activation/ActivationDataContentHandlerTest.java (original)
+++ wink/trunk/wink-server/src/test/java/org/apache/wink/server/internal/activation/ActivationDataContentHandlerTest.java Wed Apr 24 16:36:39 2013
@@ -182,13 +182,13 @@ public class ActivationDataContentHandle
         }
     }
 
-    public void test500ForMissingWriterAndHandler() throws Exception {
+    public void test406ForMissingWriterAndHandler() throws Exception {
         System.out.println(TestResource.class.getName());
         MockHttpServletRequest mockRequest =
             MockRequestConstructor.constructMockRequest("GET",
                                                         "/root/nowriterorhandler",
                                                         "not/valid");
         MockHttpServletResponse response = invoke(mockRequest);
-        assertEquals(500, response.getStatus());
+        assertEquals(406, response.getStatus());
     }
 }

Copied: wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter406Test.java (from r1467159, wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter500Test.java)
URL: http://svn.apache.org/viewvc/wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter406Test.java?p2=wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter406Test.java&p1=wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter500Test.java&r1=1467159&r2=1471518&rev=1471518&view=diff
==============================================================================
--- wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter500Test.java (original)
+++ wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/DebugNoMessageBodyWriter406Test.java Wed Apr 24 16:36:39 2013
@@ -36,7 +36,7 @@ import org.apache.wink.test.mock.MockReq
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 
-public class DebugNoMessageBodyWriter500Test extends MockServletInvocationTest {
+public class DebugNoMessageBodyWriter406Test extends MockServletInvocationTest {
 
     @Override
     protected Class<?>[] getClasses() {
@@ -105,14 +105,14 @@ public class DebugNoMessageBodyWriter500
                                                         "noWriterForJavaType",
                                                         MediaType.WILDCARD);
         MockHttpServletResponse response = invoke(request);
-        assertEquals(500, response.getStatus());
+        assertEquals(406, response.getStatus());
         assertEquals("", response.getContentAsString());
 
         assertEquals(Level.SEVERE, records.get(21).getLevel());
         assertTrue(records
             .get(21)
             .getMessage()
-            .indexOf("The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the org.apache.wink.server.serviceability.DebugNoMessageBodyWriter500Test$MyObject type and") != -1 && records
+            .indexOf("The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the org.apache.wink.server.serviceability.DebugNoMessageBodyWriter406Test$MyObject type and") != -1 && records
             .get(21)
             .getMessage()
             .indexOf("mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.") != -1);

Copied: wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter406Test.java (from r1467159, wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter500Test.java)
URL: http://svn.apache.org/viewvc/wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter406Test.java?p2=wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter406Test.java&p1=wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter500Test.java&r1=1467159&r2=1471518&rev=1471518&view=diff
==============================================================================
--- wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter500Test.java (original)
+++ wink/trunk/wink-server/src/test/java/org/apache/wink/server/serviceability/InfoNoMessageBodyWriter406Test.java Wed Apr 24 16:36:39 2013
@@ -35,7 +35,7 @@ import org.apache.wink.test.mock.MockReq
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 
-public class InfoNoMessageBodyWriter500Test extends MockServletInvocationTest {
+public class InfoNoMessageBodyWriter406Test extends MockServletInvocationTest {
 
     @Override
     protected Class<?>[] getClasses() {
@@ -92,14 +92,14 @@ public class InfoNoMessageBodyWriter500T
                                                         "noWriterForJavaType",
                                                         MediaType.WILDCARD);
         MockHttpServletResponse response = invoke(request);
-        assertEquals(500, response.getStatus());
+        assertEquals(406, response.getStatus());
         assertEquals("", response.getContentAsString());
 
         assertEquals(Level.SEVERE, records.get(5).getLevel());
         assertTrue(records
             .get(5)
             .getMessage()
-            .indexOf("The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the org.apache.wink.server.serviceability.InfoNoMessageBodyWriter500Test$MyObject type and") != -1 && records
+            .indexOf("The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the org.apache.wink.server.serviceability.InfoNoMessageBodyWriter406Test$MyObject type and") != -1 && records
             .get(5)
             .getMessage()
             .indexOf("Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.") != -1);
@@ -115,7 +115,7 @@ public class InfoNoMessageBodyWriter500T
                                                         "noWriterForMediaType",
                                                         MediaType.WILDCARD);
         MockHttpServletResponse response = invoke(request);
-        assertEquals(500, response.getStatus());
+        assertEquals(406, response.getStatus());
         assertEquals("", response.getContentAsString());
 
         assertEquals(Level.SEVERE, records.get(5).getLevel());