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);
}
}
}