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


The following commit(s) were added to refs/heads/main by this push:
     new 9d939fc2b7 GH-3046: Fix for loading custom auto modules on Fuseki 
startup.
9d939fc2b7 is described below

commit 9d939fc2b76fce7a123f1f258dea8841c10dfd39
Author: Claus Stadler <[email protected]>
AuthorDate: Fri Mar 7 15:07:18 2025 +0100

    GH-3046: Fix for loading custom auto modules on Fuseki startup.
---
 .../apache/jena/fuseki/main/cmds/FusekiMain.java   | 30 ++++++++++++++++------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
index 8eb126c5cf..9d89b82a12 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/cmds/FusekiMain.java
@@ -26,9 +26,8 @@ import java.nio.file.Path;
 import java.util.List;
 import java.util.Objects;
 import java.util.function.Consumer;
+import java.util.stream.Stream;
 
-import arq.cmdline.CmdARQ;
-import arq.cmdline.ModDatasetAssembler;
 import org.apache.jena.assembler.exceptions.AssemblerException;
 import org.apache.jena.atlas.io.IOX;
 import org.apache.jena.atlas.lib.FileOps;
@@ -37,6 +36,7 @@ import org.apache.jena.cmd.*;
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.FusekiException;
 import org.apache.jena.fuseki.main.FusekiServer;
+import org.apache.jena.fuseki.main.sys.FusekiModule;
 import org.apache.jena.fuseki.main.sys.FusekiModules;
 import org.apache.jena.fuseki.main.sys.FusekiServerArgsCustomiser;
 import org.apache.jena.fuseki.main.sys.InitFusekiMain;
@@ -54,6 +54,9 @@ import org.apache.jena.riot.RDFParser;
 import org.apache.jena.sys.JenaSystem;
 import org.slf4j.Logger;
 
+import arq.cmdline.CmdARQ;
+import arq.cmdline.ModDatasetAssembler;
+
 public class FusekiMain extends CmdARQ {
 
     /** Default HTTP port when running from the command line. */
@@ -580,12 +583,23 @@ public class FusekiMain extends CmdARQ {
             serverArgs.jettyConfigFile = jettyConfigFile;
         }
 
-        // Allows for external setting of serverArgs.fusekiModules
-        if ( serverArgs.fusekiModules == null ) {
-            // Get modules from system-wide setup.
-            boolean withModules = hasValueOfTrue(argEnableModules);
-            if ( withModules )
-                serverArgs.fusekiModules = FusekiModules.getSystemModules();
+        boolean withModules = hasValueOfTrue(argEnableModules);
+        if ( withModules ) {
+            FusekiModules presetModules = serverArgs.fusekiModules;
+            // Get auto modules from system-wide setup.
+            FusekiModules autoModules = FusekiModules.getSystemModules();
+
+            // Merge preset and auto-loaded modules into one FusekiModules 
instance.
+            if ( presetModules == null ) {
+                serverArgs.fusekiModules = autoModules;
+            } else {
+                List<FusekiModule> allModules = Stream.concat(
+                        presetModules.asList().stream(),
+                        autoModules.asList().stream())
+                    .distinct()
+                    .toList();
+                serverArgs.fusekiModules = FusekiModules.create(allModules);
+            }
         }
 
         if ( contains(argCORS) ) {

Reply via email to