Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 54F0310FF9 for ; Fri, 8 Aug 2014 19:59:58 +0000 (UTC) Received: (qmail 77336 invoked by uid 500); 8 Aug 2014 19:59:58 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 77276 invoked by uid 500); 8 Aug 2014 19:59:58 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 77262 invoked by uid 99); 8 Aug 2014 19:59:58 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 Aug 2014 19:59:58 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id EEFCC8A15D2; Fri, 8 Aug 2014 19:59:57 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: dkulp@apache.org To: commits@cxf.apache.org Message-Id: <36464dc5ad144e4a8e962328a44822bb@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: More updates to get more of the jaxrs tests passing with Jetty 9 Date: Fri, 8 Aug 2014 19:59:57 +0000 (UTC) Repository: cxf Updated Branches: refs/heads/master 52663125a -> bb1edc5dd More updates to get more of the jaxrs tests passing with Jetty 9 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/bb1edc5d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/bb1edc5d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/bb1edc5d Branch: refs/heads/master Commit: bb1edc5dd96c50ed2c3294f6834310e0a6d4381e Parents: 5266312 Author: Daniel Kulp Authored: Fri Aug 8 15:58:50 2014 -0400 Committer: Daniel Kulp Committed: Fri Aug 8 15:58:50 2014 -0400 ---------------------------------------------------------------------- rt/frontend/jaxrs/pom.xml | 5 +-- .../jaxrs/impl/ServletOutputStreamFilter.java | 9 ++++++ .../impl/tl/ThreadLocalHttpServletRequest.java | 13 ++++++++ .../impl/tl/ThreadLocalHttpServletResponse.java | 5 +++ .../impl/tl/ThreadLocalServletContext.java | 5 +++ .../http_jetty/JettyHTTPDestination.java | 33 ++++++++++---------- .../transport/servlet/AbstractHTTPServlet.java | 11 +++++-- .../transport/servlet/ServletDestination.java | 11 ++++++- .../websocket/WebSocketDestinationFactory.java | 12 +++++-- .../WebSocketVirtualServletRequest.java | 16 +++++----- .../jetty9/Jetty9WebSocketDestination.java | 32 +++++++++---------- .../jaxrs/JAXRSClientServerStreamingTest.java | 2 +- .../jaxrs/websocket/WebSocketTestClient.java | 11 +++++-- 13 files changed, 113 insertions(+), 52 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/rt/frontend/jaxrs/pom.xml ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/pom.xml b/rt/frontend/jaxrs/pom.xml index 4c9078c..b387539 100644 --- a/rt/frontend/jaxrs/pom.xml +++ b/rt/frontend/jaxrs/pom.xml @@ -99,8 +99,9 @@ ${project.version} - ${cxf.servlet-api.group} - ${cxf.servlet-api.artifact} + javax.servlet + javax.servlet-api + 3.1.0 provided true http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ServletOutputStreamFilter.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ServletOutputStreamFilter.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ServletOutputStreamFilter.java index 13ddc44..31d6606 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ServletOutputStreamFilter.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ServletOutputStreamFilter.java @@ -22,6 +22,7 @@ package org.apache.cxf.jaxrs.impl; import java.io.IOException; import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; import org.apache.cxf.message.Message; import org.apache.cxf.transport.http.AbstractHTTPDestination; @@ -57,4 +58,12 @@ public class ServletOutputStreamFilter extends ServletOutputStream { private void setComittedStatus() { m.getExchange().put(AbstractHTTPDestination.RESPONSE_COMMITED, Boolean.TRUE); } + + //Servlet 3.1 additions + public boolean isReady() { + return os.isReady(); + } + public void setWriteListener(WriteListener writeListener) { + os.setWriteListener(writeListener); + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java index 2444fc1..7f013d6 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletRequest.java @@ -40,6 +40,7 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpUpgradeHandler; import javax.servlet.http.Part; public class ThreadLocalHttpServletRequest extends AbstractThreadLocalProxy @@ -313,4 +314,16 @@ public class ThreadLocalHttpServletRequest extends AbstractThreadLocalProxy T upgrade(Class handlerClass) throws IOException, + ServletException { + return get().upgrade(handlerClass); + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java index 62ef786..b973db8 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/tl/ThreadLocalHttpServletResponse.java @@ -191,6 +191,11 @@ public class ThreadLocalHttpServletResponse extends AbstractThreadLocalProxy {1}", new Object[] {name , attributes.get(name)}); } return attributes.get(name); } @@ -333,7 +333,7 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { @Override public String getContextPath() { - LOG.log(Level.INFO, "getContextPath"); + LOG.log(Level.INFO, "getContextPath -> " + webSocketHolder.getContextPath()); return webSocketHolder.getContextPath(); } @@ -395,9 +395,9 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { @Override public String getPathInfo() { - LOG.log(Level.INFO, "getPathInfo"); String uri = requestHeaders.get(WebSocketUtils.URI_KEY); - String servletpath = webSocketHolder.getServletPath(); + String servletpath = webSocketHolder.getServletPath(); + LOG.log(Level.INFO, "getPathInfo " + servletpath + " " + uri); //TODO remove the query string part //REVISIT may cache this value in requstHeaders? return uri.substring(servletpath.length()); @@ -405,7 +405,6 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { @Override public String getPathTranslated() { - LOG.log(Level.INFO, "getPathTranslated"); String path = getPathInfo(); String opathtrans = webSocketHolder.getPathTranslated(); // some container may choose not to return this value @@ -413,6 +412,7 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { return null; } String opathinfo = webSocketHolder.getPathInfo(); + LOG.log(Level.INFO, "getPathTranslated " + path + " " + opathinfo); int pos = opathtrans.indexOf(opathinfo); //REVISIT may cache this value in requstHeaders? return new StringBuilder().append(opathtrans.substring(0, pos)).append(path).toString(); @@ -432,17 +432,17 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { @Override public String getRequestURI() { - LOG.log(Level.INFO, "getRequestURI"); + LOG.log(Level.INFO, "getRequestURI " + requestHeaders.get(WebSocketUtils.URI_KEY)); return requestHeaders.get(WebSocketUtils.URI_KEY); } @Override public StringBuffer getRequestURL() { - LOG.log(Level.INFO, "getRequestURL"); StringBuffer sb = webSocketHolder.getRequestURL(); String ouri = webSocketHolder.getRequestURI(); String uri = getRequestURI(); sb.append(uri.substring(ouri.length())); + LOG.log(Level.INFO, "getRequestURL " + uri); return sb; } @@ -454,7 +454,7 @@ public class WebSocketVirtualServletRequest implements HttpServletRequest { @Override public String getServletPath() { - LOG.log(Level.INFO, "getServletPath"); + LOG.log(Level.INFO, "getServletPath " + webSocketHolder.getServletPath()); return webSocketHolder.getServletPath(); } http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java ---------------------------------------------------------------------- diff --git a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java index 54644fd..0139479 100644 --- a/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java +++ b/rt/transports/websocket/src/main/java/org/apache/cxf/transport/websocket/jetty9/Jetty9WebSocketDestination.java @@ -22,7 +22,6 @@ package org.apache.cxf.transport.websocket.jetty9; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.net.URL; import java.nio.ByteBuffer; import java.security.Principal; import java.util.Enumeration; @@ -38,7 +37,6 @@ import javax.servlet.http.HttpServletResponse; import org.apache.cxf.Bus; import org.apache.cxf.common.classloader.ClassLoaderUtils; -import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.service.model.EndpointInfo; import org.apache.cxf.transport.http.DestinationRegistry; import org.apache.cxf.transport.http_jetty.JettyHTTPDestination; @@ -51,6 +49,7 @@ import org.apache.cxf.transport.websocket.WebSocketServletHolder; import org.apache.cxf.transport.websocket.WebSocketVirtualServletRequest; import org.apache.cxf.transport.websocket.WebSocketVirtualServletResponse; import org.apache.cxf.workqueue.WorkQueueManager; +import org.eclipse.jetty.server.Request; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketAdapter; import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; @@ -90,7 +89,17 @@ public class Jetty9WebSocketDestination extends JettyHTTPDestination implements HttpServletResponse resp) throws IOException { super.invoke(config, context, req, resp); } - + public void invoke(final ServletConfig config, + final ServletContext context, + final HttpServletRequest request, + final HttpServletResponse response) throws IOException { + if (webSocketFactory.isUpgradeRequest(request, response) + && webSocketFactory.acceptWebSocket(request, response)) { + ((Request)request).setHandled(true); + return; + } + super.invoke(config, context, request, response); + } @Override protected String getAddress(EndpointInfo endpointInfo) { String address = endpointInfo.getAddress(); @@ -99,16 +108,7 @@ public class Jetty9WebSocketDestination extends JettyHTTPDestination implements } return address; } - - - @Override - protected String getBasePath(String contextPath) throws IOException { - if (StringUtils.isEmpty(endpointInfo.getAddress())) { - return ""; - } - return new URL(getAddress(endpointInfo)).getPath(); - } - + @Override protected JettyHTTPHandler createJettyHTTPHandler(JettyHTTPDestination jhd, boolean cmExact) { return new JettyWebSocketHandler(jhd, cmExact, webSocketFactory); @@ -207,7 +207,7 @@ public class Jetty9WebSocketDestination extends JettyHTTPDestination implements return null; } public String getContextPath() { - return null; + return ((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getContextPath(); } public String getLocalAddr() { return null; @@ -261,7 +261,7 @@ public class Jetty9WebSocketDestination extends JettyHTTPDestination implements return null; } public String getServletPath() { - return "/"; + return ""; } public ServletContext getServletContext() { return null; @@ -273,7 +273,7 @@ public class Jetty9WebSocketDestination extends JettyHTTPDestination implements return null; } public Object getAttribute(String name) { - return session.getUpgradeRequest().getHeader(name); + return ((ServletUpgradeRequest)session.getUpgradeRequest()).getHttpServletRequest().getAttribute(name); } @Override public void write(byte[] data, int offset, int length) throws IOException { http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java index f2a88f6..ac940d0 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java @@ -114,7 +114,7 @@ public class JAXRSClientServerStreamingTest extends AbstractBusClientServerTestB public void testGetBook123Fail() throws Exception { WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstore/books/text/xml/123"); wc.accept("text/xml"); - wc.header("fail-write", ""); + wc.header("fail-write", "yes"); Response r = wc.get(); assertEquals(500, r.getStatus()); } http://git-wip-us.apache.org/repos/asf/cxf/blob/bb1edc5d/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/WebSocketTestClient.java ---------------------------------------------------------------------- diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/WebSocketTestClient.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/WebSocketTestClient.java index 7e45544..cfe73a5 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/WebSocketTestClient.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/websocket/WebSocketTestClient.java @@ -69,6 +69,9 @@ class WebSocketTestClient { public void connect() throws InterruptedException, ExecutionException, IOException { websocket = client.prepareGet(url).execute( new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WsSocketListener()).build()).get(); + if (websocket == null) { + throw new NullPointerException("websocket is null"); + } } public void sendTextMessage(String message) { @@ -102,8 +105,12 @@ class WebSocketTestClient { } public void close() { - websocket.close(); - client.close(); + if (websocket != null) { + websocket.close(); + } + if (client != null) { + client.close(); + } } class WsSocketListener implements WebSocketTextListener, WebSocketByteListener {