New core event: RESOURCE_REQUEST_FILTER (#480, #448).

This event allows to intercept with requests to static resources, both bundle resources and file system resources.

    Listener interface: de.deepamehta.core.service.event.ResourceRequestFilterListener
    Listener method:    void resourceRequestFilter(HttpServletRequest servletRequest)

To abort request processing throw a javax.ws.rs.WebApplicationException.
DeepaMehta will send the response wrapped in that WAE then (status code, headers, text entity).

BREAKING CHANGES

2 Core events are renamed:
    PreProcessRequestListener -> ServiceRequestFilterListener
    preProcessRequest()       -> serviceRequestFilter()

    PreSendResponseListener   -> ServiceResponseFilterListener
    preSendResponse()         -> serviceResponseFilter()

IMPORTANT

Dropping of the Felix ExtHttpService should be now complete. This branch could be merged into master.

In order to be nearly compatible with the (now dropped) registerFilter() method your plugin can consider implementing both, ServiceRequestFilterListener and (the new) ResourceRequestFilterListener. This ensures to intercept with each kind of request, that is service method requests (REST) as well as static resource requests (bundle resources and file system resources).

For the sake of completeness: the behavoir resulting from implementing both listeners is not fully equivalent as with registerFilter(). While the listeners see only requests bound to the registered URI namespaces the former servlet filter saw absolutely all requests, also the ones resulting in 404 Not Found. However, in practice this difference should not be relevant.

The Access Control plugin makes use of the new ResourceRequestFilterListener. Thus a private DeepaMehta installation works like before, also in Safari (see #448).

See #480.