Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Erdfelt2015-12-14 18:22:24 +0000
committerJoakim Erdfelt2015-12-15 21:41:37 +0000
commit77d4b54082f6789168ea7ef1523e8e1b924bb560 (patch)
treeee9d8ec6492dcae62a5596dc17fe1f57f6db9302 /jetty-servlet
parenta52a182369e397e26d0739228338f9af5cddd792 (diff)
downloadorg.eclipse.jetty.project-77d4b54082f6789168ea7ef1523e8e1b924bb560.tar.gz
org.eclipse.jetty.project-77d4b54082f6789168ea7ef1523e8e1b924bb560.tar.xz
org.eclipse.jetty.project-77d4b54082f6789168ea7ef1523e8e1b924bb560.zip
482042 - New API, Allow customization of ServletHandler path mapping
+ Swapping out PathMap for PathMappings in ServletHandler Conflicts: jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
Diffstat (limited to 'jetty-servlet')
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java7
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java8
-rw-r--r--jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java24
3 files changed, 23 insertions, 16 deletions
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java
index 56df44c2de..9ed32be55b 100644
--- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java
+++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/DefaultServlet.java
@@ -47,6 +47,7 @@ import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.http.PathMap.MappedEntry;
+import org.eclipse.jetty.http.pathmap.MappedResource;
import org.eclipse.jetty.io.WriterOutputStream;
import org.eclipse.jetty.server.HttpOutput;
import org.eclipse.jetty.server.InclusiveByteRange;
@@ -691,9 +692,9 @@ public class DefaultServlet extends HttpServlet implements ResourceFactory
if ((_welcomeServlets || _welcomeExactServlets) && welcome_servlet==null)
{
- MappedEntry<?> entry=_servletHandler.getHolderEntry(welcome_in_context);
- if (entry!=null && entry.getValue()!=_defaultHolder &&
- (_welcomeServlets || (_welcomeExactServlets && entry.getKey().equals(welcome_in_context))))
+ MappedResource<ServletHolder> entry=_servletHandler.getHolderEntry(welcome_in_context);
+ if (entry!=null && entry.getResource()!=_defaultHolder &&
+ (_welcomeServlets || (_welcomeExactServlets && entry.getPathSpec().getDeclaration().equals(welcome_in_context))))
welcome_servlet=welcome_in_context;
}
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java
index 999a086346..0edd706a70 100644
--- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java
+++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/Invoker.java
@@ -32,6 +32,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jetty.http.PathMap.MappedEntry;
+import org.eclipse.jetty.http.pathmap.MappedResource;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpChannel;
@@ -72,7 +74,7 @@ public class Invoker extends HttpServlet
private ContextHandler _contextHandler;
private ServletHandler _servletHandler;
- private Map.Entry<String, ServletHolder> _invokerEntry;
+ private MappedResource<ServletHolder> _invokerEntry;
private Map<String, String> _parameters;
private boolean _nonContextServlets;
private boolean _verbose;
@@ -171,12 +173,12 @@ public class Invoker extends HttpServlet
// Check for existing mapping (avoid threaded race).
String path=URIUtil.addPaths(servlet_path,servlet);
- Map.Entry<String, ServletHolder> entry = _servletHandler.getHolderEntry(path);
+ MappedResource<ServletHolder> entry = _servletHandler.getHolderEntry(path);
if (entry!=null && !entry.equals(_invokerEntry))
{
// Use the holder
- holder=(ServletHolder)entry.getValue();
+ holder=(ServletHolder)entry.getResource();
}
else
{
diff --git a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
index c3b152c6c3..e767851454 100644
--- a/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
+++ b/jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
@@ -52,7 +52,10 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpHeader;
import org.eclipse.jetty.http.HttpHeaderValue;
-import org.eclipse.jetty.http.PathMap;
+import org.eclipse.jetty.http.pathmap.MappedResource;
+import org.eclipse.jetty.http.pathmap.PathMappings;
+import org.eclipse.jetty.http.pathmap.PathSpec;
+import org.eclipse.jetty.http.pathmap.ServletPathSpec;
import org.eclipse.jetty.io.EofException;
import org.eclipse.jetty.io.RuntimeIOException;
import org.eclipse.jetty.security.IdentityService;
@@ -121,7 +124,8 @@ public class ServletHandler extends ScopedHandler
private MultiMap<FilterMapping> _filterNameMappings;
private final Map<String,ServletHolder> _servletNameMap=new HashMap<>();
- private PathMap<ServletHolder> _servletPathMap;
+ // private PathMap<ServletHolder> _servletPathMap;
+ private PathMappings<ServletHolder> _servletPathMap;
private ListenerHolder[] _listeners=new ListenerHolder[0];
@@ -383,7 +387,7 @@ public class ServletHandler extends ScopedHandler
* @param pathInContext Path within _context.
* @return PathMap Entries pathspec to ServletHolder
*/
- public PathMap.MappedEntry<ServletHolder> getHolderEntry(String pathInContext)
+ public MappedResource<ServletHolder> getHolderEntry(String pathInContext)
{
if (_servletPathMap==null)
return null;
@@ -470,14 +474,14 @@ public class ServletHandler extends ScopedHandler
if (target.startsWith("/"))
{
// Look for the servlet by path
- PathMap.MappedEntry<ServletHolder> entry=getHolderEntry(target);
+ MappedResource<ServletHolder> entry=getHolderEntry(target);
if (entry!=null)
{
- servlet_holder=entry.getValue();
+ PathSpec pathSpec = entry.getPathSpec();
+ servlet_holder=entry.getResource();
- String servlet_path_spec= entry.getKey();
- String servlet_path=entry.getMapped()!=null?entry.getMapped():PathMap.pathMatch(servlet_path_spec,target);
- String path_info=PathMap.pathInfo(servlet_path_spec,target);
+ String servlet_path=pathSpec.getPathMatch(target);
+ String path_info=pathSpec.getPathInfo(target);
if (DispatcherType.INCLUDE.equals(type))
{
@@ -1432,7 +1436,7 @@ public class ServletHandler extends ScopedHandler
}
else
{
- PathMap<ServletHolder> pm = new PathMap<>();
+ PathMappings<ServletHolder> pm = new PathMappings<>();
Map<String,ServletMapping> servletPathMappings = new HashMap<String,ServletMapping>();
//create a map of paths to set of ServletMappings that define that mapping
@@ -1495,7 +1499,7 @@ public class ServletHandler extends ScopedHandler
if (LOG.isDebugEnabled()) LOG.debug("Chose path={} mapped to servlet={} from default={}", pathSpec, finalMapping.getServletName(), finalMapping.isDefault());
servletPathMappings.put(pathSpec, finalMapping);
- pm.put(pathSpec,_servletNameMap.get(finalMapping.getServletName()));
+ pm.put(new ServletPathSpec(pathSpec),_servletNameMap.get(finalMapping.getServletName()));
}
_servletPathMap=pm;

Back to the top