Luca Rosellini created FLUME-2782:
-------------------------------------
Summary: Extension-friendly HttpSource
Key: FLUME-2782
URL: https://issues.apache.org/jira/browse/FLUME-2782
Project: Flume
Issue Type: Improvement
Components: Sinks+Sources
Affects Versions: 1.6, v1.5.2
Reporter: Luca Rosellini
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 {{FlumeHTTPServlet}} to customize {{HttpServletResponse}}
before 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:
{code:title=CustomHTTPSource.java|borderStyle=solid}
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","...");
}
}
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)