Per-server verbose setting

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/629377e1
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/629377e1
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/629377e1

Branch: refs/heads/master
Commit: 629377e1eb6604abae310e5c6af29da6e4d64073
Parents: fdaa648
Author: Andy Seaborne <[email protected]>
Authored: Fri Nov 24 23:13:12 2017 +0000
Committer: Andy Seaborne <[email protected]>
Committed: Tue Dec 12 10:07:37 2017 +0000

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/Fuseki.java     | 18 ++++++++++++++-
 .../apache/jena/fuseki/build/FusekiBuilder.java | 23 ++++++++++----------
 .../apache/jena/fuseki/jetty/JettyFuseki.java   |  2 --
 .../jena/fuseki/server/FusekiInitialConfig.java |  3 ++-
 .../fuseki/server/FusekiServerListener.java     | 10 ++++-----
 .../apache/jena/fuseki/servlets/ActionBase.java |  3 +--
 .../apache/jena/fuseki/servlets/HttpAction.java |  5 ++---
 .../jena/fuseki/embedded/FusekiServer.java      | 10 ++++++++-
 8 files changed, 48 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/Fuseki.java
----------------------------------------------------------------------
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 4a4d4bd..639a1dd 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
@@ -22,6 +22,8 @@ import java.util.Calendar ;
 import java.util.TimeZone ;
 import java.util.concurrent.TimeUnit ;
 
+import javax.servlet.ServletContext;
+
 import org.apache.jena.atlas.lib.DateTimeUtils ;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.riot.system.stream.LocatorFTP ;
@@ -176,9 +178,23 @@ public class Fuseki {
     /** Instance of log for config server messages. */
     public static final Logger        configLog         = 
LoggerFactory.getLogger(configLogName) ;
 
-    /** Instance of log for config server message s */
+    /** Instance of log for config server messages.
+     * This is the global default used to set attribute
+     * in each server created.
+     */
     public static boolean             verboseLogging    = false ;
 
+    /** ServletContext attibute for "verbose" - the value of the attirbiye is 
a Boolean */
+    public static String attrVerbose = "jena-fuseki:verbose" ;
+
+    public static void setVerbose(ServletContext cxt, boolean verbose) {
+        cxt.setAttribute(attrVerbose, Boolean.valueOf(verbose));
+    }
+
+    public static boolean getVerbose(ServletContext cxt) {
+        return (Boolean)cxt.getAttribute(attrVerbose);
+    }
+
     /**
      * An instance of management for stream opening, including redirecting
      * through a location mapper whereby a name (e.g. URL) is redirected to

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiBuilder.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiBuilder.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiBuilder.java
index 9a177fb..19f2745 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiBuilder.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiBuilder.java
@@ -47,12 +47,9 @@ import org.apache.jena.rdf.model.Resource ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.util.FmtUtils ;
 import org.apache.jena.vocabulary.RDF ;
-import org.slf4j.Logger ;
 
 public class FusekiBuilder
 {
-    private static Logger log = Fuseki.builderLog ;
-    
     /** Build a DataAccessPoint, including DataService, from the description 
at Resource svc */ 
     public static DataAccessPoint buildDataAccessPoint(Resource svc, 
DatasetDescriptionRegistry dsDescMap) {
         RDFNode n = FusekiLib.getOne(svc, "fu:name") ;
@@ -72,7 +69,6 @@ public class FusekiBuilder
 
     /** Build a DatasetRef starting at Resource svc, having the services as 
described by the descriptions. */
     private static DataService buildDataServiceCustom(Resource svc, 
DatasetDescriptionRegistry dsDescMap) {
-        if ( log.isDebugEnabled() ) log.debug("Service: " + nodeLabel(svc)) ;
         Resource datasetDesc = ((Resource)getOne(svc, "fu:dataset")) ;
         Dataset ds = getDataset(datasetDesc, dsDescMap);
  
@@ -132,24 +128,29 @@ public class FusekiBuilder
     /** Build a DataService starting at Resource svc, with the standard 
(default) set of services */
     public static DataService buildDataServiceStd(DatasetGraph dsg, boolean 
allowUpdate) {
         DataService dataService = new DataService(dsg) ;
-        addServiceEP(dataService, Operation.Query, "query") ;
-        addServiceEP(dataService, Operation.Query, "sparql") ;
+        populateStdServices(dataService, allowUpdate);
+        return dataService ;
+    }        
+        
+    /** Convenience operation to populate a {@link DataService} with the 
conventional default services. */ 
+    public static void populateStdServices(DataService dataService, boolean 
allowUpdate) {
+        addServiceEP(dataService, Operation.Query,      "query") ;
+        addServiceEP(dataService, Operation.Query,      "sparql") ;
         if ( ! allowUpdate ) {
             addServiceEP(dataService, Operation.GSP_R,      "data") ;
             addServiceEP(dataService, Operation.DatasetRequest_R,    "") ;
-            return dataService ;
+            return;
         }
         addServiceEP(dataService, Operation.GSP_RW,     "data") ;
         addServiceEP(dataService, Operation.GSP_R,      "get") ;
         addServiceEP(dataService, Operation.Update,     "update") ;
         addServiceEP(dataService, Operation.Upload,     "upload") ;
-        // Dispatch needs introspecting on the HTTP request.
         addServiceEP(dataService, Operation.DatasetRequest_RW, "") ;
-        return dataService ;
     }
 
-    private static void addServiceEP(DataService dataService, Operation 
operation, String epName) {
-        dataService.addEndpoint(operation, epName) ; 
+    /** Add an operation to a {@link DataService} with a given endpoint name */
+    public static void addServiceEP(DataService dataService, Operation 
operation, String endpointName) {
+        dataService.addEndpoint(operation, endpointName) ; 
     }
 
     public static RDFNode getOne(Resource svc, String property) {

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/jetty/JettyFuseki.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/jetty/JettyFuseki.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/jetty/JettyFuseki.java
index 1c3670b..483fb65 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/jetty/JettyFuseki.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/jetty/JettyFuseki.java
@@ -90,8 +90,6 @@ public class JettyFuseki {
      */
     
     public static void initializeServer(JettyServerConfig config) {
-        // Currently server-wide.
-        Fuseki.verboseLogging = config.verboseLogging ;
         instance = new JettyFuseki(config) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiInitialConfig.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiInitialConfig.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiInitialConfig.java
index 8e66502..5c44802 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiInitialConfig.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiInitialConfig.java
@@ -21,12 +21,13 @@ package org.apache.jena.fuseki.server;
 import java.util.HashMap ;
 import java.util.Map ;
 
+import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.sparql.core.DatasetGraph ;
 
 /** Dataset setup (command line, config file) for a dataset (or several if 
config file) */
 public class FusekiInitialConfig {
     public boolean quiet = false ;
-    public boolean verbose = false ;
+    public boolean verbose = Fuseki.verboseLogging ;
     
     // Priority order : --conf, templated  
     // through the command line processing should not allow --conf and a 
templated /dataset.

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServerListener.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServerListener.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServerListener.java
index ce8bb10..ba3d85b 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServerListener.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServerListener.java
@@ -88,13 +88,13 @@ public class FusekiServerListener implements 
ServletContextListener {
                 initialSetup.fusekiServerConfigFile = cfg ;
             }
 
-            if ( initialSetup != null ) {
-                
FusekiSystem.initializeDataAccessPoints(dataAccessPointRegistry,
-                                                        initialSetup, 
FusekiSystem.dirConfiguration.toString()) ;
-            } else {
+            if ( initialSetup == null ) {
                 Fuseki.serverLog.error("No configuration") ;
                 throw new FusekiException("No configuration") ;
-            }
+            }                
+            Fuseki.setVerbose(servletContext, initialSetup.verbose);
+            FusekiSystem.initializeDataAccessPoints(dataAccessPointRegistry,
+                                                    initialSetup, 
FusekiSystem.dirConfiguration.toString()) ;
         } catch (Throwable th) { 
             Fuseki.serverLog.error("Exception in initialization: {}", 
th.getMessage()) ;
             throw th ;

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
index c8a8f57..3a61e90 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
@@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletResponse ;
 
 import org.apache.jena.atlas.RuntimeIOException ;
 import org.apache.jena.atlas.web.HttpException;
-import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.query.ARQ ;
 import org.apache.jena.query.QueryCancelledException ;
 import org.apache.jena.riot.web.HttpNames ;
@@ -131,7 +130,7 @@ public abstract class ActionBase extends ServletBase
      */
     protected HttpAction allocHttpAction(long id, HttpServletRequest request, 
HttpServletResponse response) {
         // Need a way to set verbose logging on a per servlet and per request 
basis. 
-        return new HttpAction(id, log, request, response, 
Fuseki.verboseLogging) ;
+        return new HttpAction(id, log, request, response);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
index 9c10db1..f3f658b 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/HttpAction.java
@@ -102,16 +102,15 @@ public class HttpAction
      * @param log Logger for this action 
      * @param request HTTP request
      * @param response HTTP response
-     * @param verbose verbose flag
      */
-    public HttpAction(long id, Logger log, HttpServletRequest request, 
HttpServletResponse response, boolean verbose) {
+    public HttpAction(long id, Logger log, HttpServletRequest request, 
HttpServletResponse response) {
         this.id = id ;
         this.log = log ;
         this.request = request ;
         this.response = new HttpServletResponseTracker(this, response) ;
         // Should this be set when setDataset is called from the dataset 
context?
         // Currently server-wide, e.g. from the command line.
-        this.verbose = verbose ;
+        this.verbose = Fuseki.getVerbose(request.getServletContext()); 
         this.contextPath = request.getServletContext().getContextPath() ;
         this.actionURI = ActionLib.actionURI(request) ;
         this.serviceDispatchRegistry = 
ServiceDispatchRegistry.get(request.getServletContext()) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/629377e1/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
 
b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
index ae38265..f7c837a 100644
--- 
a/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
+++ 
b/jena-fuseki2/jena-fuseki-embedded/src/main/java/org/apache/jena/fuseki/embedded/FusekiServer.java
@@ -176,6 +176,7 @@ public class FusekiServer {
         private int                      port               = 3330 ;
         private boolean                  loopback           = false ;
         private boolean                  withStats          = false ;
+        private boolean                  verbose            = false ;
         // Other servlets to add.
         private List<Pair<String, HttpServlet>> other = new ArrayList<>();
         private String                   contextPath        = "/" ;
@@ -221,6 +222,12 @@ public class FusekiServer {
             this.securityHandler = securityHandler;
             return this;
         }
+        
+        /** Set verbose logging */
+        public Builder setVerbose(boolean verbose) {
+            this.verbose = verbose;
+            return this;
+        }
 
         /** Add the "/$/stats" servlet that responds with stats about the 
server,
          * including counts of all calls made.
@@ -300,6 +307,8 @@ public class FusekiServer {
             }) ;
             ServletContextHandler handler = buildServletContext(contextPath, 
registry) ;
 
+            Fuseki.setVerbose(handler.getServletContext(), verbose);
+            
             ServiceDispatchRegistry.set(handler.getServletContext(), 
serviceRegistry);
             
             setMimeTypes(handler);
@@ -374,7 +383,6 @@ public class FusekiServer {
                 staticContent.setInitParameter("resourceBase", 
staticContentDir) ;
                 context.addServlet(staticContent, "/");
             }
-                
         }
 
         private static void addServlet(ServletContextHandler context, String 
pathspec, HttpServlet httpServlet) {

Reply via email to