You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/12/26 08:46:15 UTC
tomee git commit: fixing servlet component routing when we use jetty
Repository: tomee
Updated Branches:
refs/heads/develop cd98a4275 -> 0b87f105e
fixing servlet component routing when we use jetty
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0b87f105
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0b87f105
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0b87f105
Branch: refs/heads/develop
Commit: 0b87f105e0d6d075bd2e84ec292eb41856103dbb
Parents: cd98a42
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Dec 26 08:46:02 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Dec 26 08:46:02 2014 +0100
----------------------------------------------------------------------
.../openejb/server/httpd/FilterListener.java | 5 +++-
.../server/httpd/HttpListenerRegistry.java | 24 ++++++++++++++++----
.../openejb/server/httpd/HttpRequestImpl.java | 2 +-
.../server/httpd/FilterRegistrationTest.java | 5 ++--
4 files changed, 28 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/0b87f105/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/FilterListener.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/FilterListener.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/FilterListener.java
index b28f3c4..bede414 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/FilterListener.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/FilterListener.java
@@ -24,6 +24,7 @@ import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class FilterListener implements HttpListener {
@@ -68,7 +69,9 @@ public class FilterListener implements HttpListener {
final HttpListenerRegistry registry = SystemInstance.get().getComponent(HttpListenerRegistry.class);
registry.setOrigin(origin);
try {
- registry.onMessage((HttpRequest) request, (HttpResponse) response);
+ registry.onMessage(
+ HttpRequest.class.isInstance(request) ? HttpRequest.class.cast(request) : new ServletRequestAdapter(HttpServletRequest.class.cast(request)),
+ HttpResponse.class.isInstance(response) ? HttpResponse.class.cast(response) : new ServletResponseAdapter(HttpServletResponse.class.cast(response)));
} catch (final RuntimeException re) {
throw re;
} catch (final ServletException e) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/0b87f105/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
index 497ed93..414c8e7 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpListenerRegistry.java
@@ -64,8 +64,14 @@ public class HttpListenerRegistry implements HttpListener {
@Override
public void onMessage(final HttpRequest request, final HttpResponse response) throws Exception {
- final String servletPath = request.getServletPath();
- final String path = request.getContextPath() + (!servletPath.startsWith("/") ? "/" : "") + servletPath;
+ final HttpRequest registered = this.request.get();
+ final String path;
+ if (!HttpRequestImpl.class.isInstance(request)) {
+ path = request.getRequestURI();
+ } else {
+ path = getRequestHandledPath(request);
+ }
+
final FilterListener currentFL = currentFilterListener.get();
// first look filters
@@ -74,8 +80,11 @@ public class HttpListenerRegistry implements HttpListener {
filters = new HashMap<>(filterRegistry);
}
+ final boolean reset = registered == null;
try {
- this.request.set(request);
+ if (reset) {
+ this.request.set(request);
+ }
boolean lastWasCurrent = false;
for (Map.Entry<String, Collection<HttpListener>> entry : filters.entrySet()) {
String pattern = entry.getKey();
@@ -106,10 +115,17 @@ public class HttpListenerRegistry implements HttpListener {
if (currentFL == null) {
currentFilterListener.set(null);
}
- this.request.set(null);
+ if (reset) {
+ this.request.set(null);
+ }
}
}
+ private String getRequestHandledPath(final HttpRequest request) {
+ final String servletPath = request.getServletPath();
+ return request.getContextPath() + (!servletPath.startsWith("/") ? "/" : "") + servletPath;
+ }
+
public void addHttpListener(HttpListener listener, String regex) {
synchronized (registry) {
registry.put(regex, listener);
http://git-wip-us.apache.org/repos/asf/tomee/blob/0b87f105/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
index 1e9365b..c04cb61 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
@@ -286,7 +286,7 @@ public class HttpRequestImpl implements HttpRequest {
}
return path;
}
- if ("/".equals(path)) { // not initialized, contextpath = "" so let use it for our router (HttpListenerRegistry)
+ if ("/".equals(path) && uri != null) { // not initialized, contextpath = "" so let use it for our router (HttpListenerRegistry)
return uri.getPath();
}
return getPathInfo();
http://git-wip-us.apache.org/repos/asf/tomee/blob/0b87f105/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/FilterRegistrationTest.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/FilterRegistrationTest.java b/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/FilterRegistrationTest.java
index c4733b7..30d2367 100644
--- a/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/FilterRegistrationTest.java
+++ b/server/openejb-http/src/test/java/org/apache/openejb/server/httpd/FilterRegistrationTest.java
@@ -36,6 +36,7 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URI;
@@ -99,7 +100,7 @@ public class FilterRegistrationTest {
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
ok = true;
try {
- chain.doFilter(new HttpRequestImpl(new URI("http://ok/filter/touch")) {
+ chain.doFilter(new HttpServletRequestWrapper(new HttpRequestImpl(new URI("http://ok/filter/touch")) {
@Override
public java.net.URI getURI() {
return super.getSocketURI();
@@ -110,7 +111,7 @@ public class FilterRegistrationTest {
return "GET";
}
- }, response);
+ }), response);
} catch (URISyntaxException e) {
throw new ServletException(e);
}