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