From dbfa17c24e32f4c6e001c2df4343d1b5dba98ab4 Mon Sep 17 00:00:00 2001 From: Luca Rosellini Date: Fri, 29 May 2015 08:59:45 +0200 Subject: [PATCH 1/2] HTTPSource refactor to allow third party extensions and customizations --- .../apache/flume/source/http/HTTPSource.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java index b520b03282..a9a2189f99 100644 --- a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java +++ b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java @@ -171,6 +171,10 @@ private void checkHostAndPort() { + " specified"); } + protected void customizeServletContext(org.mortbay.jetty.servlet.Context context){ + + } + @Override public void start() { Preconditions.checkState(srv == null, @@ -202,7 +206,8 @@ public void start() { org.mortbay.jetty.servlet.Context root = new org.mortbay.jetty.servlet.Context( srv, "/", org.mortbay.jetty.servlet.Context.SESSIONS); - root.addServlet(new ServletHolder(new FlumeHTTPServlet()), "/"); + root.addServlet(new ServletHolder(getServlet()), "/"); + customizeServletContext(root); HTTPServerConstraintUtil.enforceConstraints(root); srv.start(); Preconditions.checkArgument(srv.getHandler().equals(root)); @@ -215,6 +220,10 @@ public void start() { super.start(); } + protected HttpServlet getServlet() { + return new FlumeHTTPServlet(); + } + @Override public void stop() { try { @@ -228,7 +237,7 @@ public void stop() { LOG.info("Http source {} stopped. Metrics: {}", getName(), sourceCounter); } - private class FlumeHTTPServlet extends HttpServlet { + protected class FlumeHTTPServlet extends HttpServlet { private static final long serialVersionUID = 4891924863218790344L; @@ -270,13 +279,17 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) + ex.getMessage()); return; } - response.setCharacterEncoding(request.getCharacterEncoding()); + customizeServletResponse(request, response); response.setStatus(HttpServletResponse.SC_OK); response.flushBuffer(); sourceCounter.incrementAppendBatchAcceptedCount(); sourceCounter.addToEventAcceptedCount(events.size()); } + protected void customizeServletResponse(HttpServletRequest request, HttpServletResponse response) { + response.setCharacterEncoding(request.getCharacterEncoding()); + } + @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { From 9484a5fdd5f47ef2d4a2f900120a232b8737fe65 Mon Sep 17 00:00:00 2001 From: Luca Rosellini Date: Fri, 29 May 2015 09:28:35 +0200 Subject: [PATCH 2/2] Added JavaDoc documentation --- .../java/org/apache/flume/source/http/HTTPSource.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java index a9a2189f99..8e94a9459f 100644 --- a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java +++ b/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java @@ -171,6 +171,11 @@ private void checkHostAndPort() { + " specified"); } + /** + * Jetty Context customization hook. + * + * @param context the Jetty context. + */ protected void customizeServletContext(org.mortbay.jetty.servlet.Context context){ } @@ -220,6 +225,11 @@ public void start() { super.start(); } + /** + * Http Servlet factory method. + * + * @return an instance of {@see javax.servlet.http.HttpServlet} + */ protected HttpServlet getServlet() { return new FlumeHTTPServlet(); }