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

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git

commit b24a742fd75dea9976145efea68d8d937c70c2d6
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Dec 23 10:11:51 2025 +0000

    Extract Servlet404
---
 .../org/apache/jena/fuseki/main/FusekiServer.java  | 34 ++----------
 .../apache/jena/fuseki/main/cmds/Servlet404.java   | 64 ++++++++++++++++++++++
 .../main/sys/FusekiServerArgsCustomiser.java       |  7 ++-
 3 files changed, 72 insertions(+), 33 deletions(-)

diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
index 847628a599..ed2ddc7e82 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiServer.java
@@ -20,7 +20,6 @@ package org.apache.jena.fuseki.main;
 
 import static java.util.Objects.requireNonNull;
 import static org.apache.jena.atlas.lib.PropertyUtils.loadFromFile;
-import static org.apache.jena.fuseki.Fuseki.serverLog;
 
 import java.io.IOException;
 import java.nio.file.Path;
@@ -30,8 +29,6 @@ import java.util.function.Predicate;
 import jakarta.servlet.Filter;
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.http.HttpServlet;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
 import org.apache.jena.atlas.json.JSON;
 import org.apache.jena.atlas.json.JsonObject;
 import org.apache.jena.atlas.lib.FileOps;
@@ -50,6 +47,7 @@ import org.apache.jena.fuseki.auth.AuthPolicy;
 import org.apache.jena.fuseki.build.FusekiConfig;
 import org.apache.jena.fuseki.ctl.*;
 import org.apache.jena.fuseki.main.cmds.FusekiMain;
+import org.apache.jena.fuseki.main.cmds.Servlet404;
 import org.apache.jena.fuseki.main.sys.*;
 import org.apache.jena.fuseki.metrics.MetricsProvider;
 import org.apache.jena.fuseki.mod.prometheus.PrometheusMetricsProvider;
@@ -67,7 +65,6 @@ import org.apache.jena.sparql.util.ContextAccumulator;
 import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.system.G;
 import org.apache.jena.system.RDFDataException;
-import org.apache.jena.web.HttpSC;
 import org.eclipse.jetty.ee11.servlet.DefaultServlet;
 import org.eclipse.jetty.ee11.servlet.FilterHolder;
 import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
@@ -362,7 +359,7 @@ public class FusekiServer {
         // Post-start completion. Find the ports.
         Connector[] connectors = server.getServer().getConnectors();
         if ( connectors.length == 0 )
-            serverLog.warn("Start Fuseki: No connectors");
+            Fuseki.serverLog.warn("Start Fuseki: No connectors");
 
         // Extract the ports from the Connectors.
         Arrays.stream(connectors).forEach(c->{
@@ -1742,36 +1739,13 @@ public class FusekiServer {
                 context.addServlet(staticContent, "/");
             } else {
                 // Backstop servlet
-                // Jetty default is 404 on GET and 405 otherwise
+                // Jetty default is 404 on GET and 405 (Method not allowed) 
otherwise
                 HttpServlet staticServlet = new Servlet404();
                 ServletHolder staticContent = new ServletHolder(staticServlet);
                 context.addServlet(staticContent, "/");
             }
         }
 
-        /** 404 for HEAD/GET/POST/PUT */
-        static class Servlet404 extends HttpServlet {
-
-            public Servlet404() {}
-            // service()?
-            @Override
-            protected void doHead(HttpServletRequest req, HttpServletResponse 
resp)     { err404(req, resp); }
-            @Override
-            protected void doGet(HttpServletRequest req, HttpServletResponse 
resp)      { err404(req, resp); }
-            @Override
-            protected void doPost(HttpServletRequest req, HttpServletResponse 
resp)     { err404(req, resp); }
-            @Override
-            protected void doPut(HttpServletRequest req, HttpServletResponse 
resp)      { err404(req, resp); }
-            //protected void doDelete(HttpServletRequest req, 
HttpServletResponse resp)
-            //protected void doTrace(HttpServletRequest req, 
HttpServletResponse resp)
-            //protected void doOptions(HttpServletRequest req, 
HttpServletResponse resp)
-            private static void err404(HttpServletRequest req, 
HttpServletResponse response) {
-                try {
-                    response.sendError(HttpSC.NOT_FOUND_404, 
HttpSC.getMessage(HttpSC.NOT_FOUND_404));
-                } catch (IOException ex) {}
-            }
-        }
-
         private static void addServlet(ServletContextHandler context, String 
pathspec, HttpServlet httpServlet) {
             ServletHolder sh = new ServletHolder(httpServlet);
             context.addServlet(sh, pathspec);
@@ -1804,7 +1778,7 @@ public class FusekiServer {
         }
 
         private Server jettyServer(ServletContextHandler handler, String 
jettyServerConfig) {
-            serverLog.info("Jetty server config file = " + jettyServerConfig);
+            Fuseki.serverLog.info("Jetty server config file = " + 
jettyServerConfig);
             Server server = JettyServer.jettyServer(jettyServerConfig);
             server.setHandler(handler);
             return server;
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java
new file mode 100644
index 0000000000..cee099a6d7
--- /dev/null
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/Servlet404.java
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.apache.jena.fuseki.main.cmds;
+
+import java.io.IOException;
+
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.apache.jena.web.HttpSC;
+
+/** 404 for HEAD/GET/POST/PUT */
+public class Servlet404 extends HttpServlet {
+    public Servlet404() {}
+
+    // service()?
+    @Override
+    protected void doHead(HttpServletRequest req, HttpServletResponse resp) {
+        err404(req, resp);
+    }
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
+        err404(req, resp);
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
+        err404(req, resp);
+    }
+
+    @Override
+    protected void doPut(HttpServletRequest req, HttpServletResponse resp) {
+        err404(req, resp);
+    }
+
+    // protected void doDelete(HttpServletRequest req, HttpServletResponse 
resp)
+    // protected void doTrace(HttpServletRequest req, HttpServletResponse resp)
+    // protected void doOptions(HttpServletRequest req, HttpServletResponse 
resp)
+
+    private static void err404(HttpServletRequest req, HttpServletResponse 
response) {
+        try {
+            response.sendError(HttpSC.NOT_FOUND_404, 
HttpSC.getMessage(HttpSC.NOT_FOUND_404));
+        } catch (IOException ex) {}
+    }
+}
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
index 275a61877b..51e39c9001 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiServerArgsCustomiser.java
@@ -44,13 +44,14 @@ import org.apache.jena.rdf.model.Model;
  *   {@link FusekiAutoModule#start()} or from Java application code.
  * </li>
  * <li>
- *    {@link #serverArgsModify} &ndash; Register or modify the argument setup 
to be
+ *    {@link #serverArgsModify} &ndash; Called before command line processing.
+ *    This call can register or modify the argument setup to be
  *     used to parse the command line.
  * </li>
  * <li>
  *   {@link #serverArgsPrepare} &ndash; Called after parsing the command line 
and
- *   recoding the command line settings in {@link ServerArgs}. Customisers can 
record
- *   argument values and flags.
+ *   recording the command line settings in {@link ServerArgs}.
+ *   Customisers can record argument values and flags.
  * </li>
  * <li>
  *   {@link #serverArgsBuilder} &ndash; Called after the {@link ServerArgs} 
have

Reply via email to