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 f90de90b3922799eaf3fceb876c1cb363603a181 Author: Andy Seaborne <[email protected]> AuthorDate: Fri Jan 2 10:35:16 2026 +0000 Tidy up class Fuseki --- .../main/java/org/apache/jena/fuseki/Fuseki.java | 89 +++++++++++----------- 1 file changed, 44 insertions(+), 45 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 e44a8c91a8..664f4700db 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 @@ -50,13 +50,10 @@ public class Fuseki { */ static public final String FusekiSymbolIRI = "http://jena.apache.org/fuseki#"; - /** Default location of the pages for the Fuseki UI */ - static public final String PagesStatic = "pages"; - - /** Dummy base URi string for parsing SPARQL Query and Update requests */ + /** Dummy base URI string for parsing SPARQL Query and Update requests */ static public final String BaseParserSPARQL = "http://server/unset-base/"; - /** Dummy base URi string for parsing SPARQL Query and Update requests */ + /** Dummy base URI string for parsing SPARQL Query and Update requests */ static public final String BaseUpload = "http://server/unset-base/"; /** The name of the Fuseki server.*/ @@ -85,7 +82,7 @@ public class Fuseki { * <b>Note</b><br/> * GSP Direct Naming was implemented to provide two implementations for the SPARQL 1.1 implementation report. */ - static public final boolean GSP_DIRECT_NAMING = false; + static public final boolean GSP_DIRECT_NAMING = false; /** Are we in development mode? That means a SNAPSHOT, or no VERSION * because maven has not filtered the fuseki-properties.xml file. @@ -97,6 +94,7 @@ public class Fuseki { developmentMode = ( VERSION == null || VERSION.equals("development") || VERSION.contains("SNAPSHOT") ); } + // @formatter:off public static boolean outputJettyServerHeader = developmentMode; public static boolean outputFusekiServerHeader = developmentMode; @@ -110,85 +108,80 @@ public class Fuseki { static public final String serverHttpName = NAME + " (" + VERSION + ")"; /** Logger name for operations */ - public static final String actionLogName = PATH + ".Fuseki"; + public static final String actionLogName = PATH + ".Fuseki"; /** Instance of log for operations */ - public static final Logger actionLog = LoggerFactory.getLogger(actionLogName); + public static final Logger actionLog = LoggerFactory.getLogger(actionLogName); /** Instance of log for operations : alternative variable name */ - public static final Logger fusekiLog = LoggerFactory.getLogger(actionLogName); + public static final Logger fusekiLog = LoggerFactory.getLogger(actionLogName); /** Logger name for standard webserver log file request log */ - public static final String requestLogName = PATH + ".Request"; + public static final String requestLogName = PATH + ".Request"; // See HttpAction.finishRequest. // Normally OFF /** Instance of a log for requests: format is NCSA. */ - public static final Logger requestLog = LoggerFactory.getLogger(requestLogName); + public static final Logger requestLog = LoggerFactory.getLogger(requestLogName); /** Admin log file for operations. */ - public static final String adminLogName = PATH + ".Admin"; + public static final String adminLogName = PATH + ".Admin"; /** Instance of log for operations. */ - public static final Logger adminLog = LoggerFactory.getLogger(adminLogName); - - // Unused -// /** Admin log file for operations. */ -// public static final String builderLogName = PATH + ".Builder"; -// -// /** Instance of log for operations. */ -// public static final Logger builderLog = LoggerFactory.getLogger(builderLogName); -// -// // Now validation uses action logger. + public static final Logger adminLog = LoggerFactory.getLogger(adminLogName); + +// // Now validation uses the action logger. // /** Validation log file for operations. */ // public static final String validationLogName = PATH + ".Validate"; /** Instance of log for validation. */ - public static final Logger validationLog = LoggerFactory.getLogger(adminLogName); + public static final Logger validationLog = actionLog; /** Actual log file for general server messages. */ - public static final String serverLogName = PATH + ".Server"; + public static final String serverLogName = PATH + ".Server"; /** Instance of log for general server messages. */ - public static final Logger serverLog = LoggerFactory.getLogger(serverLogName); + public static final Logger serverLog = LoggerFactory.getLogger(serverLogName); /** * Logger used for the servletContent.log operations (if settable -- depends on environment). * This is both the display name of the servlet context and the logger name. */ - public static final String servletRequestLogName = PATH + ".Servlet"; + public static final String servletRequestLogName = PATH + ".Servlet"; /** log for config server messages. */ - public static final String configLogName = PATH + ".Config"; + public static final String configLogName = PATH + ".Config"; /** Instance of log for config server messages. */ - public static final Logger configLog = LoggerFactory.getLogger(configLogName); + public static final Logger configLog = LoggerFactory.getLogger(configLogName); - public static final String backupLogName = PATH + ".Backup"; - public static final Logger backupLog = LoggerFactory.getLogger(backupLogName); + public static final String backupLogName = PATH + ".Backup"; + public static final Logger backupLog = LoggerFactory.getLogger(backupLogName); - public static final String compactLogName = PATH + ".Compact"; - public static final Logger compactLog = LoggerFactory.getLogger(compactLogName);; + public static final String compactLogName = PATH + ".Compact"; + public static final Logger compactLog = LoggerFactory.getLogger(compactLogName); // There isn't an ideal status code for a cancelled query. - // HTTP 408 "Request timeout" which is about connection management + // HTTP 408 "Request timeout" which is about connection management, not for general timeouts. public static int SC_QueryCancelled = HttpSC.SERVICE_UNAVAILABLE_503; // Servlet context attribute names used by the core engine. // Also in FusekiServerCtl for Fuseki server - public static final String attrVerbose = "org.apache.jena.fuseki:verbose"; - public static final String attrNameRegistry = "org.apache.jena.fuseki:DataAccessPointRegistry"; - public static final String attrOperationRegistry = "org.apache.jena.fuseki:OperationRegistry"; - public static final String attrMetricsProvider = "org.apache.jena.fuseki:MetricsProvider"; + public static final String attrVerbose = "org.apache.jena.fuseki:verbose"; + public static final String attrNameRegistry = "org.apache.jena.fuseki:DataAccessPointRegistry"; + public static final String attrOperationRegistry = "org.apache.jena.fuseki:OperationRegistry"; + public static final String attrMetricsProvider = "org.apache.jena.fuseki:MetricsProvider"; // Use by jena-fuseki-access - public static final String attrAuthorizationService = "org.apache.jena.fuseki:AuthorizationService"; + public static final String attrAuthorizationService = "org.apache.jena.fuseki:AuthorizationService"; // Servlet context attribute names used by Fuseki Server. // The server (so we can go from servlet context, available in request, to the server. - public static final String attrFusekiServer = "org.apache.jena.fuseki:Server"; + public static final String attrFusekiServer = "org.apache.jena.fuseki:Server"; // The FusekiServerCtl object for the admin area; may be null - public static final String attrFusekiServerCtl = "org.apache.jena.fuseki:ServerCtl"; + public static final String attrFusekiServerCtl = "org.apache.jena.fuseki:ServerCtl"; + + // @formatter:on public static void setVerbose(ServletContext cxt, boolean verbose) { cxt.setAttribute(attrVerbose, Boolean.valueOf(verbose)); @@ -221,11 +214,17 @@ public class Fuseki { // Server start time and uptime. private static final long startMillis = System.currentTimeMillis(); - // Hide server locale - private static final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("00:00")); - static { cal.setTimeInMillis(startMillis); } // Exactly the same start point! - - private static final String startDateTime = DateTimeUtils.calendarToXSDDateTimeString(cal); + private static final String startDateTime = calculateServerStartTime(startMillis); + + /** Calculate an XSD string for the server start time, in timezone 00:00 (hide server locale) */ + private static String calculateServerStartTime(long milliseconds) { + // Use same milliseconds as startMillis to get exactly the same point in time. + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("00:00")); + // Exactly the same start point in timezone Z + cal.setTimeInMillis(milliseconds); + String x = DateTimeUtils.calendarToXSDDateTimeString(cal); + return x; + } /** Return the number of milliseconds since the server started */ public static long serverUptimeMillis() {
