Extension-friendly HttpSource
This patch allows third-party to developers extend HttpSource behavior easily, without having to reimplement the whole thing.
More specifically:
- Adds an hook to customize
org.mortbay.jetty.servlet.Context. - Delegates the HttpServlet instance creation to a protected factory method.
- Changes FlumeHttpServlet visibility to
protected, to let third party developers extend from it. - Adds an hook in
FlumeHTTPServletto customizeHttpServletResponsebefore it is flushed.
We developed this patch because we had to add a custom servlet filter to the Jetty context.
Having this patch applied, a third-party developer could easily extend HttpSource like this:
public class CustomHTTPSource extends HTTPSource {
@Override
protected void customizeServletContext(Context context) {
super.customizeServletContext(context);
context.addFilter(MyCustomHttpServletFilter.class,"/*",0);
}
@Override
protected HttpServlet getServlet() {
return new KeedioFlumeHTTPServlet();
}
protected class KeedioFlumeHTTPServlet extends FlumeHTTPServlet{
@Override
protected void customizeServletResponse(HttpServletRequest request, HttpServletResponse response) {
super.customizeServletResponse(request, response);
response.addHeader("Accept-Encoding","...");
}
}
}
We don't accept pull requests. Could you please attach the patch to a jira here: https://issues.apache.org/jira/browse/FLUME ? Thanks!
@harishreedharan attached the patch to a new jira issue: https://issues.apache.org/jira/browse/FLUME-2782
Hi @harishreedharan, did you have the chance to take a look at this?
This fell of my radar. Sorry! I will look at this next week.
Can one of the admins verify this patch?