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 47a5acb246b135a3a7e3f03e87dd0653e56e66e6
Author: Andy Seaborne <[email protected]>
AuthorDate: Sat Dec 14 16:02:15 2024 +0000

    Fuseki init. Split code out of constants class. Name fuseki/main init as 
InitFusekiMain
---
 .../main/java/org/apache/jena/fuseki/Fuseki.java   | 33 +++---------
 .../org/apache/jena/fuseki/build/FusekiConfig.java |  2 -
 .../org/apache/jena/fuseki/system/FusekiCore.java  | 62 ++++++++++++++++++++++
 .../org/apache/jena/fuseki/main/FusekiLib.java     |  6 ++-
 .../apache/jena/fuseki/main/cmds/FusekiMain.java   |  2 +
 .../jena/fuseki/main/sys/FusekiLifecycle.java      |  2 +-
 .../sys/{InitFuseki.java => InitFusekiMain.java}   | 11 +++-
 .../org.apache.jena.sys.JenaSubsystemLifecycle     |  2 +-
 .../AbstractTestFusekiSecurityAssembler.java       |  4 +-
 .../ExFuseki_04_CustomOperation_Inline.java        |  4 +-
 .../ExFuseki_04_CustomOperation_Module.java        |  4 +-
 .../apache/jena/fuseki/cmd/FusekiWebappCmd.java    |  3 +-
 .../apache/jena/fuseki/cmd/JettyFusekiWebapp.java  |  7 ++-
 .../fuseki/webapp/FusekiServerEnvironmentInit.java |  3 ++
 .../apache/jena/fuseki/webapp/FusekiWebapp.java    |  5 +-
 .../jena/fuseki/webapp/ShiroEnvironmentLoader.java |  5 +-
 .../java/org/apache/jena/fuseki/ServerCtl.java     |  7 ++-
 17 files changed, 118 insertions(+), 44 deletions(-)

diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
index f82f7dad8f..b58e75a135 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
@@ -26,15 +26,12 @@ import jakarta.servlet.ServletContext;
 
 import org.apache.jena.atlas.lib.DateTimeUtils;
 import org.apache.jena.atlas.lib.Version;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.query.ARQ;
 import org.apache.jena.riot.system.stream.LocatorFTP;
 import org.apache.jena.riot.system.stream.LocatorHTTP;
 import org.apache.jena.riot.system.stream.StreamManager;
 import org.apache.jena.sparql.util.Context;
-import org.apache.jena.sparql.util.MappingRegistry;
-import org.apache.jena.sys.JenaSystem;
-import org.apache.jena.tdb1.TDB1;
-import org.apache.jena.tdb1.transaction.TransactionManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -103,6 +100,12 @@ public class Fuseki {
     public static boolean   outputJettyServerHeader     = developmentMode;
     public static boolean   outputFusekiServerHeader    = developmentMode;
 
+    /**
+     * Initialize is class.
+     * See also {@link FusekiCore} for Fuseki core initialization.
+     */
+    public static void initConsts() {}
+
     /** An identifier for the HTTP Fuseki server instance */
     static public final String  serverHttpName          = NAME + " (" + 
VERSION + ")";
 
@@ -205,8 +208,6 @@ public class Fuseki {
     // HTTP response header inserted to aid tracking.
     public static String FusekiRequestIdHeader = "Fuseki-Request-Id";
 
-    private static boolean            initialized       = false;
-
     // Server start time and uptime.
     private static final long startMillis = System.currentTimeMillis();
     // Hide server locale
@@ -231,26 +232,6 @@ public class Fuseki {
         return startDateTime;
     }
 
-    /**
-     * Initialize an instance of the Fuseki server stack.
-     * This is not done via Jena's initialization mechanism
-     * but done explicitly to give more control.
-     * Touching this class causes this to happen
-     * (see static block at the end of this class).
-     */
-    public synchronized static void init() {
-        if ( initialized )
-            return;
-        initialized = true;
-        JenaSystem.init();
-        MappingRegistry.addPrefixMapping("fuseki", FusekiSymbolIRI);
-
-        TDB1.setOptimizerWarningFlag(false);
-        // Don't use TDB1 batch commits.
-        // This can be slower, but it less memory hungry and more predictable.
-        TransactionManager.QueueBatchSize = 0;
-    }
-
     /**
      * Get server global {@link org.apache.jena.sparql.util.Context}.
      *
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
index fe295857fc..8496ef7a94 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
@@ -97,8 +97,6 @@ public class FusekiConfig {
                    Operation.GSP_RW,
                    Operation.Patch);
 
-    static { Fuseki.init(); }
-
     /** Convenience operation to populate a {@link DataService} with the 
conventional default services. */
     public static DataService.Builder populateStdServices(DataService.Builder 
dataServiceBuilder, boolean allowUpdate) {
         Set<Endpoint> endpoints = new HashSet<>();
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiCore.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiCore.java
new file mode 100644
index 0000000000..aa13af4c72
--- /dev/null
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/FusekiCore.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+package org.apache.jena.fuseki.system;
+
+import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.sparql.util.MappingRegistry;
+import org.apache.jena.sys.JenaSystem;
+import org.apache.jena.tdb1.TDB1;
+import org.apache.jena.tdb1.transaction.TransactionManager;
+
+/**
+ * Fuseki core initialization.
+ * <p>
+ * Initialize an instance of the Fuseki server core code.
+ * This is not done via Jena's initialization mechanism
+ * but done explicitly to give control.
+ * <p>
+ * It is done after Jena initializes.
+ * <p>
+ * {@code InitFusekiMain} is the code for Jena's initialization mechanism.
+ * It calls this class.
+ */
+public class FusekiCore {
+    // This is not triggered by a services file.
+
+    private static boolean initialized = false;
+
+    public synchronized static void init() {
+        if ( initialized )
+            return;
+
+        // Avoid re-entrancy.
+        initialized = true;
+
+        JenaSystem.init();
+        // Touch the Fuseki class to make sure statics get initialized.
+        Fuseki.initConsts();
+        MappingRegistry.addPrefixMapping("fuseki", Fuseki.FusekiSymbolIRI);
+
+        // TDB1
+        TDB1.setOptimizerWarningFlag(false);
+        // Don't use TDB1 batch commits.
+        // This can be slower, but it less memory hungry and more predictable.
+        TransactionManager.QueueBatchSize = 0;
+    }
+}
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java
index 5a6730639e..d385d468bb 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/FusekiLib.java
@@ -59,9 +59,13 @@ public class FusekiLib {
     /**
      * Process a configuration mode to find the DataServices and reset the 
server
      * {@link DataAccessPointRegistry}. The only server-level setting 
processed is
-     * the {@code fuseki:services} list. Other settings are ignored.
+     * the {@code fuseki:services} list; other settings are ignored.
      */
     public static void reload(FusekiServer server, Model configuration) {
+        // See also FusekiServer.applyDatabaseSetup
+        //      prepareDataServices(dapRegistry, operationReg);
+        //      OperationRegistry.set(servletContext, operationReg);
+        //      DataAccessPointRegistry.set(servletContext, dapRegistry);
         DataAccessPointRegistry newRegistry = new DataAccessPointRegistry();
         OperationRegistry operationRegistry = server.getOperationRegistry();
 
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 f3966f5cc8..a7a1789c44 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
@@ -41,6 +41,7 @@ import org.apache.jena.fuseki.main.FusekiServer;
 import org.apache.jena.fuseki.main.sys.FusekiAutoModules;
 import org.apache.jena.fuseki.main.sys.FusekiModules;
 import org.apache.jena.fuseki.main.sys.FusekiServerArgsCustomiser;
+import org.apache.jena.fuseki.main.sys.InitFusekiMain;
 import org.apache.jena.fuseki.server.DataAccessPoint;
 import org.apache.jena.fuseki.server.DataAccessPointRegistry;
 import org.apache.jena.fuseki.server.FusekiCoreInfo;
@@ -155,6 +156,7 @@ public class FusekiMain extends CmdARQ {
      */
     public static void run(String... argv) {
         JenaSystem.init();
+        InitFusekiMain.init();
         new FusekiMain(argv).mainRun();
     }
 
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiLifecycle.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiLifecycle.java
index 70ddbb3973..365346715a 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiLifecycle.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/FusekiLifecycle.java
@@ -24,7 +24,7 @@ import org.apache.jena.base.module.SubsystemLifecycle;
  * A {@link SubsystemLifecycle} for Fuseki.
  * This lifecycle is run after Jena system initialization.
  * Jena system initialization includes system initialization of Fuseki itself
- * in {@link InitFuseki}.
+ * in {@link InitFusekiMain}.
  * This lifecycle is for extensions to an initialized Fuseki server
  * and is used via {@link FusekiAutoModule}.
  */
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFuseki.java
 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFusekiMain.java
similarity index 83%
rename from 
jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFuseki.java
rename to 
jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFusekiMain.java
index ef6259d065..b61ab50a25 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFuseki.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/java/org/apache/jena/fuseki/main/sys/InitFusekiMain.java
@@ -20,6 +20,7 @@ package org.apache.jena.fuseki.main.sys;
 
 import org.apache.jena.cmd.Cmds;
 import org.apache.jena.fuseki.main.cmds.FusekiMainCmd;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.sys.JenaSubsystemLifecycle;
 import org.apache.jena.sys.JenaSystem;
 
@@ -28,7 +29,7 @@ import org.apache.jena.sys.JenaSystem;
  * Level 101 - called during Jena system initialization
  * and after Jena itself has initialized.
  */
-public class InitFuseki implements JenaSubsystemLifecycle {
+public class InitFusekiMain implements JenaSubsystemLifecycle {
 
     private static volatile boolean initialized = false;
 
@@ -45,7 +46,8 @@ public class InitFuseki implements JenaSubsystemLifecycle {
         if ( initialized ) {
             return;
         }
-        synchronized (InitFuseki.class) {
+
+        synchronized (InitFusekiMain.class) {
             if ( initialized ) {
                 JenaSystem.logLifecycle("Fuseki.init - skip");
                 return;
@@ -53,7 +55,12 @@ public class InitFuseki implements JenaSubsystemLifecycle {
             initialized = true;
             JenaSystem.logLifecycle("Fuseki.init - start");
 
+            // Ensure core constants are initialized first.
+            FusekiCore.init();
             FusekiModules.init();
+
+            // Leave until known to be needed FusekiServer build with no 
specific FusekikModules given.
+            // FusekiModulesCtl.setup();
             try {
                 Cmds.injectCmd("fuseki", a->FusekiMainCmd.main(a));
             } catch (NoClassDefFoundError ex) {
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
 
b/jena-fuseki2/jena-fuseki-main/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
index 892450f911..d628747016 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
+++ 
b/jena-fuseki2/jena-fuseki-main/src/main/resources/META-INF/services/org.apache.jena.sys.JenaSubsystemLifecycle
@@ -1 +1 @@
-org.apache.jena.fuseki.main.sys.InitFuseki
+org.apache.jena.fuseki.main.sys.InitFusekiMain
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestFusekiSecurityAssembler.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestFusekiSecurityAssembler.java
index 5d823fad79..ade33038b7 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestFusekiSecurityAssembler.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/access/AbstractTestFusekiSecurityAssembler.java
@@ -36,6 +36,7 @@ import org.apache.jena.atlas.web.HttpException;
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.main.FusekiLib;
 import org.apache.jena.fuseki.main.FusekiServer;
+import org.apache.jena.fuseki.main.sys.InitFusekiMain;
 import org.apache.jena.graph.Node;
 import org.apache.jena.query.Dataset;
 import org.apache.jena.query.QuerySolution;
@@ -46,7 +47,6 @@ import org.apache.jena.rdfconnection.RDFConnection;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.sse.SSE;
-import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.system.Txn;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -63,7 +63,7 @@ import org.junit.Test;
  */
 
 public abstract class AbstractTestFusekiSecurityAssembler {
-    static { JenaSystem.init(); }
+    static { InitFusekiMain.init(); }
     static final String DIR = "testing/Access/";
 
     private final String assemblerFile;
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Inline.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Inline.java
index fce39ffd2d..38aef337da 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Inline.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Inline.java
@@ -25,6 +25,7 @@ import org.apache.jena.fuseki.FusekiException;
 import org.apache.jena.fuseki.build.FusekiExt;
 import org.apache.jena.fuseki.main.FusekiServer;
 import org.apache.jena.fuseki.main.sys.FusekiModule;
+import org.apache.jena.fuseki.main.sys.InitFusekiMain;
 import org.apache.jena.fuseki.server.Operation;
 import org.apache.jena.fuseki.servlets.ActionService;
 import org.apache.jena.fuseki.servlets.HttpAction;
@@ -32,7 +33,6 @@ import org.apache.jena.fuseki.system.FusekiLogging;
 import org.apache.jena.http.HttpOp;
 import org.apache.jena.riot.WebContent;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.web.HttpSC;
 
 /**
@@ -46,8 +46,8 @@ import org.apache.jena.web.HttpSC;
 public class ExFuseki_04_CustomOperation_Inline {
 
     static {
-        JenaSystem.init();
         FusekiLogging.setLogging();
+        InitFusekiMain.init();
     }
 
     public static void main(String...args) {
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Module.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Module.java
index b9429c3423..e4791698b5 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Module.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/examples/ExFuseki_04_CustomOperation_Module.java
@@ -27,6 +27,7 @@ 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.InitFusekiMain;
 import org.apache.jena.fuseki.server.Operation;
 import org.apache.jena.fuseki.servlets.ActionService;
 import org.apache.jena.fuseki.servlets.HttpAction;
@@ -35,7 +36,6 @@ import org.apache.jena.http.HttpOp;
 import org.apache.jena.rdf.model.Model;
 import org.apache.jena.riot.WebContent;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
-import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.web.HttpSC;
 
 /**
@@ -48,8 +48,8 @@ import org.apache.jena.web.HttpSC;
 public class ExFuseki_04_CustomOperation_Module {
 
     static {
-        JenaSystem.init();
         FusekiLogging.setLogging();
+        InitFusekiMain.init();
     }
 
     // Example usage.
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/FusekiWebappCmd.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/FusekiWebappCmd.java
index 147064669a..4c9a27b149 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/FusekiWebappCmd.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/FusekiWebappCmd.java
@@ -31,6 +31,7 @@ import org.apache.jena.cmd.TerminationException;
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.FusekiException;
 import org.apache.jena.fuseki.mgt.Template;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.fuseki.system.FusekiLogging;
 import org.apache.jena.fuseki.webapp.FusekiEnv;
 import org.apache.jena.fuseki.webapp.FusekiServerListener;
@@ -96,7 +97,7 @@ public class FusekiWebappCmd {
         static public void innerMain(String... argv) {
             JenaSystem.init();
             // Do explicitly so it happens after subsystem initialization.
-            Fuseki.init();
+            FusekiCore.init();
             new FusekiCmdInner(argv).mainRun();
         }
 
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/JettyFusekiWebapp.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/JettyFusekiWebapp.java
index 02578d5a3a..2af9efbebd 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/JettyFusekiWebapp.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/cmd/JettyFusekiWebapp.java
@@ -31,7 +31,9 @@ import org.apache.jena.fuseki.FusekiConfigException;
 import org.apache.jena.fuseki.FusekiException;
 import org.apache.jena.fuseki.server.DataAccessPointRegistry;
 import org.apache.jena.fuseki.server.FusekiCoreInfo;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.fuseki.webapp.FusekiEnv;
+import org.apache.jena.sys.JenaSystem;
 import org.eclipse.jetty.ee10.servlet.ServletContextHandler;
 import org.eclipse.jetty.ee10.servlet.security.ConstraintMapping;
 import org.eclipse.jetty.ee10.servlet.security.ConstraintSecurityHandler;
@@ -59,7 +61,10 @@ public class JettyFusekiWebapp {
     // This class is becoming less important - it now sets up a Jetty server 
for in-process use
     // either for the command line in development
     // and in testing but not direct webapp deployments.
-    static { Fuseki.init(); }
+    static {
+        JenaSystem.init();
+        FusekiCore.init();
+    }
 
     public static JettyFusekiWebapp  instance    = null;
 
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiServerEnvironmentInit.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiServerEnvironmentInit.java
index 22e120b50a..12e7a63ec0 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiServerEnvironmentInit.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiServerEnvironmentInit.java
@@ -22,6 +22,7 @@ import jakarta.servlet.ServletContextEvent;
 import jakarta.servlet.ServletContextListener;
 
 import org.apache.jena.fuseki.system.FusekiLogging;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.sys.JenaSystem;
 
 /** Setup the environment and logging.
@@ -49,6 +50,8 @@ public class FusekiServerEnvironmentInit implements 
ServletContextListener {
             }
         }
         JenaSystem.init();
+        FusekiCore.init();
+
     }
 
     @Override
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiWebapp.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiWebapp.java
index cfe6d69731..7eaa7006e5 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiWebapp.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/FusekiWebapp.java
@@ -46,6 +46,7 @@ import org.apache.jena.fuseki.server.DataAccessPointRegistry;
 import org.apache.jena.fuseki.server.DataService;
 import org.apache.jena.fuseki.servlets.HttpAction;
 import org.apache.jena.fuseki.servlets.ServletOps;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.rdf.model.*;
 import org.apache.jena.rdfs.RDFSFactory;
@@ -55,6 +56,7 @@ import org.apache.jena.riot.RDFLanguages;
 import org.apache.jena.riot.RDFParser;
 import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.assembler.AssemblerUtils;
+import org.apache.jena.sys.JenaSystem;
 
 public class FusekiWebapp
 {
@@ -122,7 +124,8 @@ public class FusekiWebapp
             Path FUSEKI_HOME = FusekiEnv.FUSEKI_HOME;
             Path FUSEKI_BASE = FusekiEnv.FUSEKI_BASE;
 
-            Fuseki.init();
+            JenaSystem.init();
+            FusekiCore.init();
             Fuseki.configLog.info("FUSEKI_HOME="+ ((FUSEKI_HOME==null) ? 
"unset" : FUSEKI_HOME.toString()));
             Fuseki.configLog.info("FUSEKI_BASE="+FUSEKI_BASE.toString());
 
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/ShiroEnvironmentLoader.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/ShiroEnvironmentLoader.java
index 30e4dd0b65..389a9946fc 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/ShiroEnvironmentLoader.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/webapp/ShiroEnvironmentLoader.java
@@ -26,7 +26,9 @@ import jakarta.servlet.ServletContextEvent;
 import jakarta.servlet.ServletContextListener;
 
 import org.apache.jena.fuseki.Fuseki;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.irix.IRIs;
+import org.apache.jena.sys.JenaSystem;
 import org.apache.shiro.lang.io.ResourceUtils;
 import org.apache.shiro.web.env.EnvironmentLoader;
 import org.apache.shiro.web.env.ResourceBasedWebEnvironment;
@@ -86,8 +88,9 @@ public class ShiroEnvironmentLoader extends EnvironmentLoader 
implements Servlet
 
     /** Look for a Shiro ini file, or return null */
     private static String huntForShiroIni(String[] locations) {
+        JenaSystem.init();
+        FusekiCore.init();
         FusekiEnv.setEnvironment();
-        Fuseki.init();
         for ( String loc : locations ) {
             // If file:, look for that file.
             // If a relative name without scheme, look in FUSEKI_BASE, 
FUSEKI_HOME, webapp.
diff --git 
a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
 
b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
index 39838f9ed8..0a573f9c71 100644
--- 
a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
+++ 
b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/ServerCtl.java
@@ -30,6 +30,7 @@ import org.apache.jena.atlas.web.WebLib;
 import org.apache.jena.fuseki.cmd.FusekiArgs;
 import org.apache.jena.fuseki.cmd.JettyFusekiWebapp;
 import org.apache.jena.fuseki.cmd.JettyServerConfig;
+import org.apache.jena.fuseki.system.FusekiCore;
 import org.apache.jena.fuseki.webapp.FusekiEnv;
 import org.apache.jena.fuseki.webapp.FusekiServerListener;
 import org.apache.jena.fuseki.webapp.FusekiWebapp;
@@ -37,6 +38,7 @@ import org.apache.jena.sparql.core.DatasetGraph;
 import org.apache.jena.sparql.core.DatasetGraphFactory;
 import org.apache.jena.sparql.modify.request.Target;
 import org.apache.jena.sparql.modify.request.UpdateDrop;
+import org.apache.jena.sys.JenaSystem;
 import org.apache.jena.system.Txn;
 import org.apache.jena.update.Update;
 import org.apache.jena.update.UpdateExecutionFactory;
@@ -83,7 +85,10 @@ import org.apache.jena.update.UpdateProcessor;
  * </pre>
  */
 public class ServerCtl {
-    static { Fuseki.init(); }
+    static {
+        JenaSystem.init();
+        FusekiCore.init();
+    }
 
     /* Cut&Paste versions:
 

Reply via email to