This is an automated email from the ASF dual-hosted git repository.

ppkarwasz pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/logging-flume.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 0a82f29a0 Move HTTPSource to its own flume-http-source module (#444)
0a82f29a0 is described below

commit 0a82f29a0c1d8628f9593de28d4e959aaa1f5119
Author: Piotr P. Karwasz <[email protected]>
AuthorDate: Thu Jun 11 11:30:07 2026 +0200

    Move HTTPSource to its own flume-http-source module (#444)
    
    * Move HTTPSource to its own flume-http-source module
    
    Keeping HTTPSource in flume-ng-core forced the heavy Jetty/Gson HTTP
    stack onto every core consumer. Extract it into a dedicated optional
    source module under flume-ng-sources, like taildir, so it ships only
    when needed.
    
    The package (org.apache.flume.source.http) is unchanged, so the
    SourceType.HTTP reflective mapping and existing "http" configs keep
    working. Core retains Jetty/Gson for its metrics server and
    HTTPServerConstraintUtil.
    
    Assisted-By: Claude Opus 4.8 (1M context) <[email protected]>
    
    * Make flume-http-source self-contained for HTTP constraints
    
    HTTPSource was reaching into flume-ng-core for HTTPServerConstraintUtil.
    Move that helper into the module next to its only caller and make it
    package-private, so the HTTP source no longer depends on a core internal
    for its Jetty constraint handling. Declare jetty-security directly here
    (managed in flume-parent) since the helper uses it.
    
    Assisted-By: Claude Opus 4.8 (1M context) <[email protected]>
---
 flume-bom/pom.xml                                  |   5 +
 .../flume/source/TestDefaultSourceFactory.java     |   2 -
 flume-ng-dist/pom.xml                              |   4 +
 flume-ng-sources/flume-http-source/pom.xml         | 127 +++++++++++++++++++++
 .../org/apache/flume/source/http/BLOBHandler.java  |   0
 .../flume/source/http/HTTPBadRequestException.java |   0
 .../source/http}/HTTPServerConstraintUtil.java     |   6 +-
 .../org/apache/flume/source/http/HTTPSource.java   |   1 -
 .../http/HTTPSourceConfigurationConstants.java     |   0
 .../flume/source/http/HTTPSourceHandler.java       |   0
 .../org/apache/flume/source/http/JSONHandler.java  |   0
 .../http/FlumeHttpServletRequestWrapper.java       |   0
 .../apache/flume/source/http/TestBLOBHandler.java  |   0
 .../apache/flume/source/http/TestHTTPSource.java   |   0
 .../flume/source/http/TestHTTPSourceFactory.java   |  33 +++---
 .../apache/flume/source/http/TestJSONHandler.java  |   0
 .../src/test/resources/jettykeystore               | Bin
 flume-ng-sources/pom.xml                           |   1 +
 flume-parent/pom.xml                               |   6 +
 19 files changed, 162 insertions(+), 23 deletions(-)

diff --git a/flume-bom/pom.xml b/flume-bom/pom.xml
index ec04c374b..5e1dec6f3 100644
--- a/flume-bom/pom.xml
+++ b/flume-bom/pom.xml
@@ -187,6 +187,11 @@
         <artifactId>flume-scribe-source</artifactId>
         <version>${flume-scribe.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.flume.flume-ng-sources</groupId>
+        <artifactId>flume-http-source</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.flume.flume-ng-sources</groupId>
         <artifactId>flume-taildir-source</artifactId>
diff --git 
a/flume-ng-core/src/test/java/org/apache/flume/source/TestDefaultSourceFactory.java
 
b/flume-ng-core/src/test/java/org/apache/flume/source/TestDefaultSourceFactory.java
index dfd7fd7a7..2947b2c3f 100644
--- 
a/flume-ng-core/src/test/java/org/apache/flume/source/TestDefaultSourceFactory.java
+++ 
b/flume-ng-core/src/test/java/org/apache/flume/source/TestDefaultSourceFactory.java
@@ -18,7 +18,6 @@ package org.apache.flume.source;
 
 import org.apache.flume.Source;
 import org.apache.flume.SourceFactory;
-import org.apache.flume.source.http.HTTPSource;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -68,7 +67,6 @@ public class TestDefaultSourceFactory {
         verifySourceCreation("multiport_syslogtcp-src", "multiport_syslogtcp", 
MultiportSyslogTCPSource.class);
         verifySourceCreation("syslogudp-src", "syslogudp", 
SyslogUDPSource.class);
         // verifySourceCreation("spooldir-src", "spooldir", 
SpoolDirectorySource.class);
-        verifySourceCreation("http-src", "http", HTTPSource.class);
         // verifySourceCreation("thrift-src", "thrift", ThriftSource.class);
         verifySourceCreation("custom-src", 
MockSource.class.getCanonicalName(), MockSource.class);
     }
diff --git a/flume-ng-dist/pom.xml b/flume-ng-dist/pom.xml
index 3804ffc7b..92273e741 100644
--- a/flume-ng-dist/pom.xml
+++ b/flume-ng-dist/pom.xml
@@ -126,6 +126,10 @@
       <groupId>org.apache.flume</groupId>
       <artifactId>flume-legacy-thrift-source</artifactId>
     </dependency>-->
+    <dependency>
+      <groupId>org.apache.flume.flume-ng-sources</groupId>
+      <artifactId>flume-http-source</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.flume.flume-ng-sources</groupId>
       <artifactId>flume-taildir-source</artifactId>
diff --git a/flume-ng-sources/flume-http-source/pom.xml 
b/flume-ng-sources/flume-http-source/pom.xml
new file mode 100644
index 000000000..75df4f28f
--- /dev/null
+++ b/flume-ng-sources/flume-http-source/pom.xml
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.flume</groupId>
+    <artifactId>flume-ng-sources</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <groupId>org.apache.flume.flume-ng-sources</groupId>
+  <artifactId>flume-http-source</artifactId>
+  <name>Flume HTTP Source</name>
+
+  <properties>
+    <!-- TODO fix spotbugs/pmd violations -->
+    <spotbugs.maxAllowedViolations>10</spotbugs.maxAllowedViolations>
+    <pmd.maxAllowedViolations>2</pmd.maxAllowedViolations>
+    <module.name>org.apache.flume.source.http</module.name>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.flume</groupId>
+      <artifactId>flume-ng-sdk</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flume</groupId>
+      <artifactId>flume-ng-sdk</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.flume</groupId>
+      <artifactId>flume-ng-core</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.google.code.gson</groupId>
+      <artifactId>gson</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-security</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-util</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-jmx</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.easytesting</groupId>
+      <artifactId>fest-reflect</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpclient</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.httpcomponents</groupId>
+      <artifactId>httpcore</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+</project>
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/BLOBHandler.java 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/BLOBHandler.java
similarity index 100%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/BLOBHandler.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/BLOBHandler.java
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
similarity index 100%
copy from 
flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
copy to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/tools/HTTPServerConstraintUtil.java
 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPServerConstraintUtil.java
similarity index 92%
rename from 
flume-ng-core/src/main/java/org/apache/flume/tools/HTTPServerConstraintUtil.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPServerConstraintUtil.java
index 8dfef6a54..cf1a3932d 100644
--- 
a/flume-ng-core/src/main/java/org/apache/flume/tools/HTTPServerConstraintUtil.java
+++ 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPServerConstraintUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.flume.tools;
+package org.apache.flume.source.http;
 
 import org.eclipse.jetty.security.ConstraintMapping;
 import org.eclipse.jetty.security.ConstraintSecurityHandler;
@@ -25,7 +25,7 @@ import org.eclipse.jetty.util.security.Constraint;
 /**
  * Utility class to define constraints on Jetty HTTP servers
  */
-public class HTTPServerConstraintUtil {
+class HTTPServerConstraintUtil {
 
     private HTTPServerConstraintUtil() {}
 
@@ -33,7 +33,7 @@ public class HTTPServerConstraintUtil {
      * Generate constraints for the Flume HTTP Source
      * @return ConstraintSecurityHandler for use with Jetty servlet
      */
-    public static ConstraintSecurityHandler enforceConstraints() {
+    static ConstraintSecurityHandler enforceConstraints() {
         Constraint c = new Constraint();
         c.setAuthenticate(true);
 
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSource.java
similarity index 99%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSource.java
index 52c29ca9e..567e0631c 100644
--- a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSource.java
+++ 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSource.java
@@ -34,7 +34,6 @@ import org.apache.flume.exception.ChannelException;
 import org.apache.flume.instrumentation.SourceCounter;
 import org.apache.flume.source.SslContextAwareAbstractSource;
 import org.apache.flume.tools.FlumeBeanConfigurator;
-import org.apache.flume.tools.HTTPServerConstraintUtil;
 import org.eclipse.jetty.http.HttpVersion;
 import org.eclipse.jetty.jmx.MBeanContainer;
 import org.eclipse.jetty.server.HttpConfiguration;
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSourceConfigurationConstants.java
 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSourceConfigurationConstants.java
similarity index 100%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSourceConfigurationConstants.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSourceConfigurationConstants.java
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSourceHandler.java
 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSourceHandler.java
similarity index 100%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPSourceHandler.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/HTTPSourceHandler.java
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/JSONHandler.java 
b/flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/JSONHandler.java
similarity index 100%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/JSONHandler.java
rename to 
flume-ng-sources/flume-http-source/src/main/java/org/apache/flume/source/http/JSONHandler.java
diff --git 
a/flume-ng-core/src/test/java/org/apache/flume/source/http/FlumeHttpServletRequestWrapper.java
 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/FlumeHttpServletRequestWrapper.java
similarity index 100%
rename from 
flume-ng-core/src/test/java/org/apache/flume/source/http/FlumeHttpServletRequestWrapper.java
rename to 
flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/FlumeHttpServletRequestWrapper.java
diff --git 
a/flume-ng-core/src/test/java/org/apache/flume/source/http/TestBLOBHandler.java 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestBLOBHandler.java
similarity index 100%
rename from 
flume-ng-core/src/test/java/org/apache/flume/source/http/TestBLOBHandler.java
rename to 
flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestBLOBHandler.java
diff --git 
a/flume-ng-core/src/test/java/org/apache/flume/source/http/TestHTTPSource.java 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestHTTPSource.java
similarity index 100%
rename from 
flume-ng-core/src/test/java/org/apache/flume/source/http/TestHTTPSource.java
rename to 
flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestHTTPSource.java
diff --git 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestHTTPSourceFactory.java
similarity index 59%
rename from 
flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
rename to 
flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestHTTPSourceFactory.java
index 61983382e..519c36382 100644
--- 
a/flume-ng-core/src/main/java/org/apache/flume/source/http/HTTPBadRequestException.java
+++ 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestHTTPSourceFactory.java
@@ -16,27 +16,26 @@
  */
 package org.apache.flume.source.http;
 
-import org.apache.flume.FlumeException;
+import org.apache.flume.Source;
+import org.apache.flume.SourceFactory;
+import org.apache.flume.source.DefaultSourceFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
-/**
- *
- * Exception thrown by an HTTP Handler if the request was not parsed correctly
- * into an event because the request was not in the expected format.
- *
- */
-public class HTTPBadRequestException extends FlumeException {
+public class TestHTTPSourceFactory {
 
-    private static final long serialVersionUID = -3540764742069390951L;
-
-    public HTTPBadRequestException(String msg) {
-        super(msg);
-    }
+    private SourceFactory sourceFactory;
 
-    public HTTPBadRequestException(String msg, Throwable th) {
-        super(msg, th);
+    @Before
+    public void setUp() {
+        sourceFactory = new DefaultSourceFactory();
     }
 
-    public HTTPBadRequestException(Throwable th) {
-        super(th);
+    @Test
+    public void testHttpSourceCreation() throws Exception {
+        Source src = sourceFactory.create("http-src", "http");
+        Assert.assertNotNull(src);
+        Assert.assertTrue(src instanceof HTTPSource);
     }
 }
diff --git 
a/flume-ng-core/src/test/java/org/apache/flume/source/http/TestJSONHandler.java 
b/flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestJSONHandler.java
similarity index 100%
rename from 
flume-ng-core/src/test/java/org/apache/flume/source/http/TestJSONHandler.java
rename to 
flume-ng-sources/flume-http-source/src/test/java/org/apache/flume/source/http/TestJSONHandler.java
diff --git a/flume-ng-core/src/test/resources/jettykeystore 
b/flume-ng-sources/flume-http-source/src/test/resources/jettykeystore
similarity index 100%
rename from flume-ng-core/src/test/resources/jettykeystore
rename to flume-ng-sources/flume-http-source/src/test/resources/jettykeystore
diff --git a/flume-ng-sources/pom.xml b/flume-ng-sources/pom.xml
index 7c8b56222..683ea2a53 100644
--- a/flume-ng-sources/pom.xml
+++ b/flume-ng-sources/pom.xml
@@ -32,6 +32,7 @@
   <name>Flume Sources</name>
 
   <modules>
+    <module>flume-http-source</module>
     <module>flume-taildir-source</module>
   </modules>
 
diff --git a/flume-parent/pom.xml b/flume-parent/pom.xml
index 90fcb68e0..9035c0352 100644
--- a/flume-parent/pom.xml
+++ b/flume-parent/pom.xml
@@ -414,6 +414,12 @@
         <version>${jetty.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.eclipse.jetty</groupId>
+        <artifactId>jetty-security</artifactId>
+        <version>${jetty.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-util</artifactId>

Reply via email to