You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wink.apache.org by ro...@apache.org on 2010/02/24 21:18:27 UTC

svn commit: r915960 - in /incubator/wink/trunk: wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/ wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/ wink-server/src/main/java/...

Author: rott
Date: Wed Feb 24 20:18:26 2010
New Revision: 915960

URL: http://svn.apache.org/viewvc?rev=915960&view=rev
Log:
Fix issue in OPTIONS request.  If a response entity is set (due to a subresource locator being used), and the test is running in a JDK which uses a DataContentHandler, then theDataContentHandler will throw an exception that it cannot write the response entity (because it is a subresource class).  Unset the response entity if it's an automatic OPTIONS request

Added:
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/HeadersAllowResource3.java
Modified:
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/Application.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java
    incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java
    incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/OptionsMethodHandler.java

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/Application.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/Application.java?rev=915960&r1=915959&r2=915960&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/Application.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/Application.java Wed Feb 24 20:18:26 2010
@@ -29,6 +29,7 @@
         classes.add(HeadersResource.class);
         classes.add(HeadersAllowResource.class);
         classes.add(HeadersAllowResource2.class);
+        classes.add(HeadersAllowResource3.class);
         return classes;
     }
 

Added: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/HeadersAllowResource3.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/HeadersAllowResource3.java?rev=915960&view=auto
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/HeadersAllowResource3.java (added)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/main/java/org/apache/wink/itest/headers/HeadersAllowResource3.java Wed Feb 24 20:18:26 2010
@@ -0,0 +1,20 @@
+package org.apache.wink.itest.headers;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+
+@Path("headersallow3")
+public class HeadersAllowResource3 {
+
+    public static class SubLocatorResource {
+        @GET
+        public String getMore() {
+            return "foo";
+        }
+    }
+
+    @Path("/sublocator")
+    public SubLocatorResource getMore() {
+        return new SubLocatorResource();
+    }
+}

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java?rev=915960&r1=915959&r2=915960&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/HeadersTest.java Wed Feb 24 20:18:26 2010
@@ -301,5 +301,32 @@
             e.printStackTrace();
             fail(e.getMessage());
         }
+
+        try {
+            OptionsMethod httpMethod = new OptionsMethod();
+            httpMethod.setURI(new URI(getBaseURI() + "/headersallow3/sublocator", false));
+            httpClient = new HttpClient();
+            try {
+                int result = httpClient.executeMethod(httpMethod);
+                assertEquals(204, result);
+                assertNotNull(httpMethod.getResponseHeader("Allow"));
+                List<String> allowedMethods =
+                    Arrays.asList(httpMethod.getResponseHeader("Allow").getValue().split(", "));
+                System.out.println(allowedMethods);
+                assertEquals(3, allowedMethods.size());
+                assertTrue(allowedMethods.contains("HEAD"));
+                assertTrue(allowedMethods.contains("OPTIONS"));
+                assertTrue(allowedMethods.contains("GET"));
+                assertEquals(null, httpMethod.getResponseBodyAsString());
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+                fail(ioe.getMessage());
+            } finally {
+                httpMethod.releaseConnection();
+            }
+        } catch (URIException e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
     }
 }

Modified: incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java?rev=915960&r1=915959&r2=915960&view=diff
==============================================================================
--- incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java (original)
+++ incubator/wink/trunk/wink-itests/wink-itest/wink-itest-targeting/src/test/java/org/apache/wink/itest/headers/WinkHeadersTest.java Wed Feb 24 20:18:26 2010
@@ -56,8 +56,8 @@
 
     public void testGetWithLanguage() throws Exception {
         ClientResponse response =
-            client.resource(new URI(getBaseURI() + "/headers/language"))
-                .header("Content-Language", "en-us").get();
+            client.resource(new URI(getBaseURI() + "/headers/language")).header("Content-Language",
+                                                                                "en-us").get();
         assertEquals(200, response.getStatusCode());
         assertEquals("en:US", response.getHeaders().getFirst("language"));
     }
@@ -95,8 +95,8 @@
 
     public void testGetHeadersWithCase() throws Exception {
         ClientResponse response =
-            client.resource(new URI(getBaseURI() + "/headers/headercase"))
-                .header("Custom-Header", "MyValue").get();
+            client.resource(new URI(getBaseURI() + "/headers/headercase")).header("Custom-Header",
+                                                                                  "MyValue").get();
         assertEquals(200, response.getStatusCode());
         assertEquals("MyValue", response.getHeaders().getFirst("Custom-Header"));
     }
@@ -143,5 +143,16 @@
         assertTrue(allowedMethods.contains("PUT"));
         assertTrue(allowedMethods.contains("POST"));
         assertTrue(allowedMethods.contains("DELETE"));
+
+        response = client.resource(new URI(getBaseURI() + "/headersallow3/sublocator")).options();
+        assertEquals(204, response.getStatusCode());
+
+        allowedMethods = Arrays.asList(response.getHeaders().getFirst("Allow").split(", "));
+        System.out.println(allowedMethods);
+        assertEquals(3, allowedMethods.size());
+        assertTrue(allowedMethods.contains("HEAD"));
+        assertTrue(allowedMethods.contains("OPTIONS"));
+        assertTrue(allowedMethods.contains("GET"));
+        assertEquals("", response.getEntity(String.class));
     }
 }

Modified: incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/OptionsMethodHandler.java
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/OptionsMethodHandler.java?rev=915960&r1=915959&r2=915960&view=diff
==============================================================================
--- incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/OptionsMethodHandler.java (original)
+++ incubator/wink/trunk/wink-server/src/main/java/org/apache/wink/server/internal/handlers/OptionsMethodHandler.java Wed Feb 24 20:18:26 2010
@@ -68,6 +68,7 @@
                 context.getAttribute(SearchResult.class).setError(null);
                 // set result to no-content
                 context.setResponseStatusCode(Response.Status.NO_CONTENT.getStatusCode());
+                context.setResponseEntity(null);
             }
         }
     }