7d135cb495
A request wrapper is used to provide servlets contributed by plugins with a context that is rooted in the plugins path segment of the request URI. For example a plugin myPlugin that is invoked under '/a/plugins/myPlugin' should be provided with the context path '/a/plugins/myPlugin'. The request '/a/plugins/myPlugin/myResource' should give the following info for the wrapped context: contextPath: '/a/plugins/myPlugin' servletPath: '' pathInfo: '/myResource' requestURI: '/a/plugins/myPlugin/myResource' The request wrapper failed to comply with the servlet specification (servlet specification 3.1, §3.5). For example the invariant requestURI = contextPath + servletPath + pathInfo was violated. The request mapping mechanism is now extracted to a ContextMapper class. Change-Id: Ie8d9a9ac151162efb080a6e676a121a53bc11852