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:
