You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2013/12/17 19:28:26 UTC

svn commit: r1551649 - in /jena/branches/jena-fuseki-new-ui: src-dev/dev/ src/main/java/org/apache/jena/fuseki/ src/main/java/org/apache/jena/fuseki/mgt/ src/main/java/org/apache/jena/fuseki/server/ src/main/java/org/apache/jena/fuseki/servlets/ src/te...

Author: andy
Date: Tue Dec 17 18:28:26 2013
New Revision: 1551649

URL: http://svn.apache.org/r1551649
Log:
Refactor initialization

Added:
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java
Removed:
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/Test.java
Modified:
    jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/MgtCmdServlet.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
    jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java
    jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAuth.java

Modified: jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java (original)
+++ jena/branches/jena-fuseki-new-ui/src-dev/dev/PROJECT.java Tue Dec 17 18:28:26 2013
@@ -19,15 +19,13 @@
 package dev;
 
 public class PROJECT {
-    // Andy's ToDo list
     // All TODO and XXX
     // Graph upload in ActionDatasets == Upload.
 
-    // GSP, and no query string => quads operation. JENA-607
-    
     // txn and nonTxn server set up for tests.
     
     // Enables, disable R/RW on SPARQL_UberServlet(renamed) and quads operations.
+    // Need a switch on whether quadding is support and whether it's RW or not.
     
     // Remove all direct naming (put in separate servlet if ever needed)  
     //   last place : SPARQL_UberServlet
@@ -40,6 +38,9 @@ public class PROJECT {
     //   ContextPath in uber dispatch.
     //   FusekiServletContextListener
     
-    // SPARQLServer.start kicks FusekiServletContextListener which could then do the main initialization. 
+    // SPARQLServer.start kicks FusekiServletContextListener which could then do the main initialization.
+    
+    // The whole X_Config thing
+    // Check compression enabled for UberServlet
 }
 

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiCmd.java Tue Dec 17 18:28:26 2013
@@ -25,11 +25,13 @@ import java.io.InputStream ;
 import java.util.List ;
 
 import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.lib.DS ;
 import org.apache.jena.atlas.lib.FileOps ;
 import org.apache.jena.atlas.lib.Lib ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.LogCtl ;
 import org.apache.jena.fuseki.mgt.ManagementServer ;
+import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.FusekiConfig ;
 import org.apache.jena.fuseki.server.SPARQLServer ;
 import org.apache.jena.fuseki.server.ServerConfig ;
@@ -168,20 +170,24 @@ public class FusekiCmd extends CmdARQ {
         new FusekiCmd(argv).mainRun() ;
     }
 
-    private int          port              = 3030 ;
-    private int          mgtPort           = -1 ;
-    private boolean      listenLocal       = false ;
-
-    private DatasetGraph dsg               = null ;
-    private String       datasetPath       = null ;
-    private boolean      allowUpdate       = false ;
-
-    private String       fusekiConfigFile  = null ;
-    private boolean      enableCompression = true ;
-    private String       jettyConfigFile   = null ;
-    private String       authConfigFile    = null ;
-    private String       homeDir           = null ;
-    private String       pagesDir          = null ;
+    static class ServerParams { // == ServerConfig?
+        public int          port              = 3030 ;
+        public int          mgtPort           = -1 ;
+        public boolean      listenLocal       = false ;
+    
+        public DatasetGraph dsg               = null ;
+        public String       datasetPath       = null ;
+        public boolean      allowUpdate       = false ;
+    
+        public String       fusekiConfigFile  = null ;
+        public boolean      enableCompression = true ;
+        public String       jettyConfigFile   = null ;
+        public String       authConfigFile    = null ;
+        public String       homeDir           = null ;
+        public String       pagesDir          = null ;
+        public String       staticContentDir  = null ; // After adjusting.
+    }
+    private ServerParams cmdLineParams = new ServerParams() ;
 
     public FusekiCmd(String... argv) {
         super(argv) ;
@@ -230,9 +236,10 @@ public class FusekiCmd extends CmdARQ {
         int x = 0 ;
 
         Logger log = Fuseki.serverLog ;
+        ServerParams params = cmdLineParams ;
 
         if ( contains(argFusekiConfig) )
-            fusekiConfigFile = getValue(argFusekiConfig) ;
+            params.fusekiConfigFile = getValue(argFusekiConfig) ;
 
         ArgDecl assemblerDescDecl = new ArgDecl(ArgDecl.HasValue, "desc", "dataset") ;
         if ( contains(argMem) )
@@ -246,7 +253,7 @@ public class FusekiCmd extends CmdARQ {
         if ( contains(argMemTDB) )
             x++ ;
 
-        if ( fusekiConfigFile != null ) {
+        if ( params.fusekiConfigFile != null ) {
             if ( x > 1 )
                 throw new CmdException(
                                        "Dataset specificed on the command line and also a configuration file specificed.") ;
@@ -257,10 +264,10 @@ public class FusekiCmd extends CmdARQ {
 
         if ( contains(argMem) ) {
             log.info("Dataset: in-memory") ;
-            dsg = DatasetGraphFactory.createMem() ;
+            params.dsg = DatasetGraphFactory.createMem() ;
         }
         if ( contains(argFile) ) {
-            dsg = DatasetGraphFactory.createMem() ;
+            params.dsg = DatasetGraphFactory.createMem() ;
             // replace by RiotLoader after ARQ refresh.
             String filename = getValue(argFile) ;
             log.info("Dataset: in-memory: load file: " + filename) ;
@@ -273,14 +280,14 @@ public class FusekiCmd extends CmdARQ {
             InputStream input = IO.openFile(filename) ;
 
             if ( RDFLanguages.isQuads(language) )
-                RDFDataMgr.read(dsg, filename) ;
+                RDFDataMgr.read(params.dsg, filename) ;
             else
-                RDFDataMgr.read(dsg.getDefaultGraph(), filename) ;
+                RDFDataMgr.read(params.dsg.getDefaultGraph(), filename) ;
         }
 
         if ( contains(argMemTDB) ) {
             log.info("TDB dataset: in-memory") ;
-            dsg = TDBFactory.createDatasetGraph() ;
+            params.dsg = TDBFactory.createDatasetGraph() ;
         }
 
         if ( contains(argTDB) ) {
@@ -293,7 +300,7 @@ public class FusekiCmd extends CmdARQ {
                     throw new CmdException("Directory not found: " + dir) ;
                 log.info("TDB dataset: directory=" + dir) ;
             }
-            dsg = TDBFactory.createDatasetGraph(dir) ;
+            params.dsg = TDBFactory.createDatasetGraph(dir) ;
         }
 
         // Otherwise
@@ -301,20 +308,20 @@ public class FusekiCmd extends CmdARQ {
             log.info("Dataset from assembler") ;
             Dataset ds = modDataset.createDataset() ;
             if ( ds != null )
-                dsg = ds.asDatasetGraph() ;
+                params.dsg = ds.asDatasetGraph() ;
         }
 
         if ( contains(argFusekiConfig) ) {
-            if ( dsg != null )
+            if ( params.dsg != null )
                 throw new CmdException(
                                        "Dataset specificed on the command line and also a configuration file specificed.") ;
-            fusekiConfigFile = getValue(argFusekiConfig) ;
+            params.fusekiConfigFile = getValue(argFusekiConfig) ;
         }
 
         if ( contains(argPort) ) {
             String portStr = getValue(argPort) ;
             try {
-                port = Integer.parseInt(portStr) ;
+                params.port = Integer.parseInt(portStr) ;
             } catch (NumberFormatException ex) {
                 throw new CmdException(argPort.getKeyName() + " : bad port number: " + portStr) ;
             }
@@ -323,28 +330,28 @@ public class FusekiCmd extends CmdARQ {
         if ( contains(argMgtPort) ) {
             String mgtPortStr = getValue(argMgtPort) ;
             try {
-                mgtPort = Integer.parseInt(mgtPortStr) ;
+                params.mgtPort = Integer.parseInt(mgtPortStr) ;
             } catch (NumberFormatException ex) {
                 throw new CmdException(argMgtPort.getKeyName() + " : bad port number: " + mgtPortStr) ;
             }
         }
 
         if ( contains(argLocalhost) )
-            listenLocal = true ;
+            params.listenLocal = true ;
 
-        if ( fusekiConfigFile == null && dsg == null )
+        if ( params.fusekiConfigFile == null && params.dsg == null )
             throw new CmdException("No dataset defined and no configuration file: " + argUsage) ;
 
-        if ( dsg != null ) {
+        if ( params.dsg != null ) {
             if ( getPositional().size() == 0 )
                 throw new CmdException("No dataset path name given") ;
             if ( getPositional().size() > 1 )
                 throw new CmdException("Multiple dataset path names given") ;
-            datasetPath = getPositionalArg(0) ;
-            if ( datasetPath.length() > 0 && !datasetPath.startsWith("/") )
-                throw new CmdException("Dataset path name must begin with a /: " + datasetPath) ;
+            params.datasetPath = getPositionalArg(0) ;
+            if ( params.datasetPath.length() > 0 && !params.datasetPath.startsWith("/") )
+                throw new CmdException("Dataset path name must begin with a /: " + params.datasetPath) ;
 
-            allowUpdate = contains(argAllowUpdate) ;
+            params.allowUpdate = contains(argAllowUpdate) ;
         }
 
         if ( contains(argTimeout) ) {
@@ -353,31 +360,31 @@ public class FusekiCmd extends CmdARQ {
         }
 
         if ( contains(argJettyConfig) ) {
-            jettyConfigFile = getValue(argJettyConfig) ;
-            if ( !FileOps.exists(jettyConfigFile) )
-                throw new CmdException("No such file: " + jettyConfigFile) ;
+            params.jettyConfigFile = getValue(argJettyConfig) ;
+            if ( !FileOps.exists(params.jettyConfigFile) )
+                throw new CmdException("No such file: " + params.jettyConfigFile) ;
         }
 
         if ( contains(argBasicAuth) ) {
-            authConfigFile = getValue(argBasicAuth) ;
-            if ( !FileOps.exists(authConfigFile) )
-                throw new CmdException("No such file: " + authConfigFile) ;
+            params.authConfigFile = getValue(argBasicAuth) ;
+            if ( !FileOps.exists(params.authConfigFile) )
+                throw new CmdException("No such file: " + params.authConfigFile) ;
         }
 
         if ( contains(argHome) ) {
             List<String> args = super.getValues(argHome) ;
-            homeDir = args.get(args.size() - 1) ;
+            params.homeDir = args.get(args.size() - 1) ;
         }
 
         if ( contains(argPages) ) {
             List<String> args = super.getValues(argPages) ;
-            pagesDir = args.get(args.size() - 1) ;
+            params.pagesDir = args.get(args.size() - 1) ;
         }
 
         if ( contains(argGZip) ) {
             if ( !hasValueOfTrue(argGZip) && !hasValueOfFalse(argGZip) )
                 throw new CmdException(argGZip.getNames().get(0) + ": Not understood: " + getValue(argGZip)) ;
-            enableCompression = super.hasValueOfTrue(argGZip) ;
+            params.enableCompression = super.hasValueOfTrue(argGZip) ;
         }
 
         if ( contains(argUber) )
@@ -393,65 +400,95 @@ public class FusekiCmd extends CmdARQ {
 
     @Override
     protected void exec() {
-        if ( homeDir == null ) {
+        Fuseki.init() ;
+        ServerParams params = cmdLineParams ;
+        params = clean(params) ;
+        initializeServer(params) ;
+        //initializeSystem(params) ;
+        
+        
+    }
+    
+    private ServerParams clean(ServerParams params) {
+        if ( params.homeDir == null ) {
             if ( System.getenv(Fuseki.FusekiHomeEnv) != null )
-                homeDir = System.getenv(Fuseki.FusekiHomeEnv) ;
+                params.homeDir = System.getenv(Fuseki.FusekiHomeEnv) ;
             else
-                homeDir = "." ;
+                params.homeDir = "." ;
         }
 
-        homeDir = sort_out_dir(homeDir) ;
-        Fuseki.configLog.info("Home Directory: " + FileOps.fullDirectoryPath(homeDir)) ;
-        if ( !FileOps.exists(homeDir) )
-            Fuseki.configLog.warn("No such directory for Fuseki home: " + homeDir) ;
+        params.homeDir = sort_out_dir(params.homeDir) ;
+        Fuseki.configLog.info("Home Directory: " + FileOps.fullDirectoryPath(params.homeDir)) ;
+        if ( !FileOps.exists(params.homeDir) )
+            Fuseki.configLog.warn("No such directory for Fuseki home: " + params.homeDir) ;
 
-        String staticContentDir = pagesDir ;
-        if ( staticContentDir == null )
-            staticContentDir = homeDir + Fuseki.PagesStatic ;
+        params.staticContentDir = params.pagesDir ;
+        if ( params.staticContentDir == null )
+            params.staticContentDir = params.homeDir + Fuseki.PagesStatic ;
 
-        Fuseki.configLog.debug("Static Content Directory: " + FileOps.fullDirectoryPath(staticContentDir)) ;
+        Fuseki.configLog.debug("Static Content Directory: " + FileOps.fullDirectoryPath(params.staticContentDir)) ;
 
-        if ( !FileOps.exists(staticContentDir) ) {
+        if ( !FileOps.exists(params.staticContentDir) ) {
             Fuseki.configLog.warn("No such directory for static content: "
-                                  + FileOps.fullDirectoryPath(staticContentDir)) ;
+                                  + FileOps.fullDirectoryPath(params.staticContentDir)) ;
             Fuseki.configLog.warn("You may need to set the --pages or --home option to configure static content correctly") ;
         }
 
-        if ( jettyConfigFile != null )
-            Fuseki.configLog.info("Jetty configuration: " + jettyConfigFile) ;
-
-        ServerConfig serverConfig ;
+        if ( params.jettyConfigFile != null )
+            Fuseki.configLog.info("Jetty configuration: " + params.jettyConfigFile) ;
+        
+        return params ;
+    }
+    
+    private void initializeServer(ServerParams params) {  
+        List<DatasetRef> cmdLineDatasets ;
 
-        if ( fusekiConfigFile != null ) {
-            Fuseki.configLog.info("Configuration file: " + fusekiConfigFile) ;
-            serverConfig = FusekiConfig.configure(fusekiConfigFile) ;
+        if ( params.fusekiConfigFile != null ) {
+            Fuseki.configLog.info("Configuration file: " + params.fusekiConfigFile) ;
+            cmdLineDatasets = FusekiConfig.configure(params.fusekiConfigFile) ;
         } else
-            serverConfig = FusekiConfig.defaultConfiguration(datasetPath, dsg, allowUpdate, listenLocal) ;
+            cmdLineDatasets = FusekiConfig.defaultConfiguration(params.datasetPath, params.dsg, params.allowUpdate, params.listenLocal) ;
 
-        FusekiConfig.additional(serverConfig) ;
+        List<DatasetRef> additionalDatasets = FusekiConfig.additional() ;
         
-        // TODO Get from parsing config file.
-        serverConfig.port = port ;
-        serverConfig.pages = staticContentDir ;
-        serverConfig.mgtPort = mgtPort ;
-        serverConfig.pagesPort = port ;
-        serverConfig.loopback = listenLocal ;
-        serverConfig.enableCompression = enableCompression ;
-        serverConfig.jettyConfigFile = jettyConfigFile ;
-        serverConfig.authConfigFile = authConfigFile ;
+        
+        
+        ServerConfig serverConfig = new ServerConfig() ;
+        // Default values
+        serverConfig.port = 3030 ;
+        serverConfig.mgtPort = 3031 ;
+        serverConfig.pagesPort = serverConfig.port ;
+        serverConfig.jettyConfigFile = null ;
+        serverConfig.pages = Fuseki.PagesStatic ;
+        serverConfig.enableCompression = true ;
+        serverConfig.verboseLogging = false ;
+        
+        // 
+        serverConfig.datasets = DS.list() ;
+        serverConfig.datasets.addAll(cmdLineDatasets) ;
+        serverConfig.datasets.addAll(additionalDatasets) ;
+
+        serverConfig.port = params.port ;
+        serverConfig.pages = params.staticContentDir ;
+        serverConfig.mgtPort = params.mgtPort ;
+        serverConfig.pagesPort = params.port ;
+        serverConfig.loopback = params.listenLocal ;
+        serverConfig.enableCompression = params.enableCompression ;
+        serverConfig.jettyConfigFile = params.jettyConfigFile ;
+        serverConfig.authConfigFile = params.authConfigFile ;
         serverConfig.verboseLogging = (super.isVerbose() || super.isDebug()) ;
 
         SPARQLServer server = new SPARQLServer(serverConfig) ;
-
+        X_Config.configureDatasets(serverConfig.datasets);
         // Temporary?
         Fuseki.setServer(server) ;
 
         Server mgtServer = null ;
         // mgtPort = -1 means no management functions.
         
-        if ( mgtPort > 0 && mgtPort != port ) {
-            Fuseki.configLog.info("Management services on port " + mgtPort) ;
-            mgtServer = ManagementServer.createManagementServer(mgtPort) ;
+        if ( params.mgtPort > 0 && params.mgtPort != params.port ) {
+            Fuseki.configLog.info("Management services on port " + params.mgtPort) ;
+            mgtServer = ManagementServer.createManagementServer(params.mgtPort) ;
             ServletContextHandler context = (ServletContextHandler)mgtServer.getHandler() ;
             ManagementServer.addServerFunctions(context, "/$/") ;
             ManagementServer.addAdminFunctions(context, "/$/") ;
@@ -467,7 +504,7 @@ public class FusekiCmd extends CmdARQ {
             }
         }
 
-        if ( mgtPort == 0 || mgtPort == port ) {
+        if ( params.mgtPort == 0 || params.mgtPort == params.port ) {
             // TODO Temporary!
             mgtServer = server.getServer() ;
             ServletContextHandler context = (ServletContextHandler)server.getServer().getHandler() ;

Added: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java?rev=1551649&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java (added)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/X_Config.java Tue Dec 17 18:28:26 2013
@@ -0,0 +1,95 @@
+/**
+ * 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;
+
+import static java.lang.String.format ;
+import static org.apache.jena.fuseki.Fuseki.serverLog ;
+
+import java.util.List ;
+
+import org.apache.jena.fuseki.server.DatasetRef ;
+import org.apache.jena.fuseki.server.DatasetRegistry ;
+import org.apache.jena.fuseki.server.ServiceRef ;
+
+import com.hp.hpl.jena.sparql.mgt.ARQMgt ;
+
+// XX Organise!
+
+public class X_Config {
+    
+    public static void configureDatasets(List<DatasetRef> datasets) {
+        for (DatasetRef dsDesc : datasets)
+            X_Config.configureOneDataset(dsDesc) ;
+    }
+
+    public static void configureOneDataset(DatasetRef dsDesc) {
+        String datasetPath = DatasetRef.canocialDatasetPath(dsDesc.name) ;
+        registerDataset(datasetPath, dsDesc) ;
+        // Add JMX beans to record dataset and it's services.
+        addJMX(dsDesc) ;
+    }
+    
+    public static void registerDataset(String datasetPath, DatasetRef dsDesc) {
+        dsDesc.enable() ;
+        if ( DatasetRegistry.get().isRegistered(datasetPath) )
+            throw new FusekiConfigException("Already registered: key = "+datasetPath) ;
+        DatasetRegistry.get().put(datasetPath, dsDesc) ;
+        serverLog.info(format("Dataset path = %s", datasetPath)) ;
+    }
+    
+
+
+
+    public static void addJMX() {
+        DatasetRegistry registry = DatasetRegistry.get() ;
+        for (String ds : registry.keys()) {
+            DatasetRef dsRef = registry.get(ds) ;
+            addJMX(dsRef) ;
+        }
+    }
+
+    private static void addJMX(DatasetRef dsRef) {
+        String x = dsRef.name ;
+        // if ( x.startsWith("/") )
+        // x = x.substring(1) ;
+        ARQMgt.register(Fuseki.PATH + ".dataset:name=" + x, dsRef) ;
+        // For all endpoints
+        for (ServiceRef sRef : dsRef.getServiceRefs()) {
+            ARQMgt.register(Fuseki.PATH + ".dataset:name=" + x + "/" + sRef.name, sRef) ;
+        }
+    }
+
+    public static void removeJMX() {
+        DatasetRegistry registry = DatasetRegistry.get() ;
+        for (String ds : registry.keys()) {
+            DatasetRef ref = registry.get(ds) ;
+            removeJMX(ref) ;
+        }
+    }
+
+    private static void removeJMX(DatasetRef dsRef) {
+        String x = dsRef.getName() ;
+        ARQMgt.unregister(Fuseki.PATH + ".dataset:name=" + x) ;
+        for (ServiceRef sRef : dsRef.getServiceRefs()) {
+            ARQMgt.unregister(Fuseki.PATH + ".dataset:name=" + x + "/" + sRef.name) ;
+        }
+    }
+
+}
+

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Tue Dec 17 18:28:26 2013
@@ -38,6 +38,7 @@ import org.apache.jena.atlas.lib.Interna
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.web.ContentType ;
 import org.apache.jena.fuseki.FusekiLib ;
+import org.apache.jena.fuseki.X_Config ;
 import org.apache.jena.fuseki.server.* ;
 import org.apache.jena.fuseki.servlets.ActionLib ;
 import org.apache.jena.fuseki.servlets.HttpAction ;
@@ -261,7 +262,7 @@ public class ActionDatasets extends Acti
             String datasetPath = DatasetRef.canocialDatasetPath(datasetName) ;
             // Need to be in Resource space at this point.
             DatasetRef dsRef = FusekiConfig.processService(subject) ;
-            SPARQLServer.registerDataset(datasetPath, dsRef) ;
+            X_Config.registerDataset(datasetPath, dsRef) ;
             system.commit();
             committed = true ;
             ServletOps.success(action) ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/MgtCmdServlet.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/MgtCmdServlet.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/MgtCmdServlet.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/MgtCmdServlet.java Tue Dec 17 18:28:26 2013
@@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRes
 
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.server.DatasetRef ;
+import org.apache.jena.fuseki.server.DatasetRegistry ;
 import org.apache.jena.fuseki.server.SPARQLServer ;
 import org.apache.jena.fuseki.server.ServiceRef ;
 import org.apache.jena.web.HttpSC ;
@@ -123,8 +124,8 @@ public class MgtCmdServlet extends HttpS
             // out.printf("Port: %s\n",
             // server.getServer().getConnectors()[0].getPort()) ;
             out.println() ;
-
-            for ( DatasetRef dsRef : server.getDatasets() ) {
+            for ( String key : DatasetRegistry.get().keys() ) {
+                DatasetRef dsRef = DatasetRegistry.get().get(key) ;
                 datasetRefDetails(out, dsRef) ;
                 out.println() ;
             }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java Tue Dec 17 18:28:26 2013
@@ -41,7 +41,6 @@ import com.hp.hpl.jena.sparql.core.Datas
 import com.hp.hpl.jena.sparql.core.DatasetGraphFactory ;
 import com.hp.hpl.jena.sparql.core.DatasetGraphReadOnly ;
 import com.hp.hpl.jena.sparql.core.assembler.AssemblerUtils ;
-import com.hp.hpl.jena.tdb.TDB ;
 import com.hp.hpl.jena.update.UpdateAction ;
 import com.hp.hpl.jena.update.UpdateFactory ;
 import com.hp.hpl.jena.update.UpdateRequest ;
@@ -55,8 +54,6 @@ public class FusekiConfig {
     }
     
     // MASSIVE AMOUNT OF CODE TIDYING NEEDED
-    // 
-
     // The datastructure that captures a servers configuration.
 
     // Server port
@@ -67,8 +64,8 @@ public class FusekiConfig {
 
     private static Logger log      = Fuseki.configLog ;
 
-    public static ServerConfig defaultConfiguration(String datasetPath, DatasetGraph dsg, boolean allowUpdate,
-                                                    boolean listenLocal) {
+    public static List<DatasetRef> defaultConfiguration(String datasetPath, DatasetGraph dsg,
+                                                        boolean allowUpdate, boolean listenLocal) {
         DatasetRef dbDesc = new DatasetRef() ;
         dbDesc.name = DatasetRef.canocialDatasetPath(datasetPath) ;
         dbDesc.dataset = dsg ;
@@ -82,17 +79,7 @@ public class FusekiConfig {
             dbDesc.allowDatasetUpdate = true ;
         } else
             dbDesc.readGraphStore.endpoints.add(HttpNames.ServiceData) ;
-        ServerConfig config = new ServerConfig() ;
-        config.datasets = new ArrayList<DatasetRef>(Arrays.asList(dbDesc)) ;
-        config.port = 3030 ;
-        config.mgtPort = 3031 ;
-        config.pagesPort = config.port ;
-        config.loopback = listenLocal ;
-        config.jettyConfigFile = null ;
-        config.pages = Fuseki.PagesStatic ;
-        config.enableCompression = true ;
-        config.verboseLogging = false ;
-        return config ;
+        return Arrays.asList(dbDesc) ; 
     }
 
     // NEW
@@ -106,7 +93,7 @@ public class FusekiConfig {
             }
         } ;
     
-    public static void additional(ServerConfig config) {
+    public static List<DatasetRef> additional() {
         String qs = StrUtils.strjoinNL
             (SystemState.PREFIXES ,
              "SELECT * {" ,
@@ -117,6 +104,8 @@ public class FusekiConfig {
              "}"
              ) ;
         
+        List<DatasetRef> refs = new ArrayList<DatasetRef>() ;
+        
         ResultSet rs = query(qs,SystemState.dataset) ;
         
 //        ResultSetFormatter.out(rs); 
@@ -134,8 +123,9 @@ public class FusekiConfig {
             //String name = row.getLiteral("name").getLexicalForm() ;
             DatasetRef ref = processService(s) ;
             ref.setStatus(status) ;
-            config.datasets.add(ref) ;
+            refs.add(ref) ;
         }
+        return refs ;
     }
     
     public static List<DatasetRef> readConfiguration(Model m) {
@@ -191,17 +181,16 @@ public class FusekiConfig {
     
     // OLD
     
-    public static ServerConfig configure(String filename) {
-        // Be absolutely sure everything has initialized.
-        // Some initialization registers assemblers and sets abbreviation
-        // vocabulary.
-        ARQ.init() ;
-        TDB.init() ;
-        Fuseki.init() ;
-        Model m = FileManager.get().loadModel(filename) ;
-
+    /** Has side effects in server setup */
+    public static List<DatasetRef> configure(String filename) {
+        Model model = FileManager.get().loadModel(filename) ;
+        server(model) ;
+        return servicesAndDatasets(model) ;
+    }
+    
+    private static void server(Model model) {
         // Find one server.
-        List<Resource> servers = getByType(FusekiVocab.tServer, m) ;
+        List<Resource> servers = getByType(FusekiVocab.tServer, model) ;
         if ( servers.size() == 0 )
             throw new FusekiConfigException("No server found (no resource with type "
                                             + strForResource(FusekiVocab.tServer)) ;
@@ -212,9 +201,11 @@ public class FusekiConfig {
         // ---- Server
         Resource server = servers.get(0) ;
         processServer(server) ;
-
+    }
+    
+    private static List<DatasetRef> servicesAndDatasets(Model model) {
         // ---- Services
-        ResultSet rs = query("SELECT * { ?s fu:services [ list:member ?member ] }", m) ;
+        ResultSet rs = query("SELECT * { ?s fu:services [ list:member ?member ] }", model) ;
         if ( !rs.hasNext() )
             log.warn("No services found") ;
 
@@ -226,18 +217,7 @@ public class FusekiConfig {
             DatasetRef sd = processService(svc) ;
             services.add(sd) ;
         }
-
-        // TODO Properties for the other fields.
-        ServerConfig config = new ServerConfig() ;
-        config.datasets = services ;
-        config.port = 3030 ;
-        config.mgtPort = 3031 ;
-        config.pagesPort = config.port ;
-        config.jettyConfigFile = null ;
-        config.pages = Fuseki.PagesStatic ;
-        config.enableCompression = true ;
-        config.verboseLogging = false ;
-        return config ;
+        return services ;
     }
 
     // DatasetRef used where there isn't a real Dataset e.g. the SPARQL

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java Tue Dec 17 18:28:26 2013
@@ -66,6 +66,7 @@ public class FusekiServletContextListene
                 return ;
             initialized = true ;
             Fuseki.init() ;
+            
         }
     }
 }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java Tue Dec 17 18:28:26 2013
@@ -28,9 +28,9 @@ import javax.servlet.DispatcherType ;
 import javax.servlet.http.HttpServlet ;
 
 import org.apache.jena.fuseki.Fuseki ;
-import org.apache.jena.fuseki.FusekiConfigException ;
 import org.apache.jena.fuseki.FusekiException ;
 import org.apache.jena.fuseki.HttpNames ;
+import org.apache.jena.fuseki.X_Config ;
 import org.apache.jena.fuseki.mgt.MgtFunctions ;
 import org.apache.jena.fuseki.servlets.FusekiFilter ;
 import org.apache.jena.fuseki.servlets.SPARQL_QueryGeneral ;
@@ -54,7 +54,6 @@ import org.eclipse.jetty.servlets.GzipFi
 import org.eclipse.jetty.util.security.Constraint ;
 import org.eclipse.jetty.xml.XmlConfiguration ;
 
-import com.hp.hpl.jena.sparql.mgt.ARQMgt ;
 import com.hp.hpl.jena.sparql.util.Utils ;
 
 /**
@@ -86,32 +85,15 @@ public class SPARQLServer {
         this.serverConfig = config ;
         // Currently server-wide.
         Fuseki.verboseLogging = config.verboseLogging ;
-
-        // GZip compression
-        // Note that regardless of this setting we'll always leave it turned off
-        // for the servlets
-        // where it makes no sense to have it turned on e.g. update and upload
-
         ServletContextHandler context = buildServer(serverConfig.jettyConfigFile, config.enableCompression) ;
-        configureDatasets(context) ;
-    }
-
-    private void configureDatasets(ServletContextHandler context) {
-        // Build them all.
         
-        for (DatasetRef dsDesc : serverConfig.datasets)
-            configureOneDataset(context, dsDesc, serverConfig.enableCompression) ;
-
-        // Service operation dispatch:
-        // This filter looks at incoming HTTP requests and routes one that match
-        // registered, active datasets to the all purpose service dispatch servlet
-        // SPARQL_UberServlet.
-
+        // Filter to grab all request for dynamic dispatching.
         FilterHolder f = new FilterHolder(new FusekiFilter()) ;
         EnumSet<DispatcherType> es = EnumSet.allOf(DispatcherType.class) ; 
         context.addFilter(f, "/*", es);
+        // Datasets not initialized yet.
     }
-    
+
     /**
      * Initialize the {@link SPARQLServer} instance.
      */
@@ -135,8 +117,7 @@ public class SPARQLServer {
             serverLog.error("SPARQLServer: Failed to start server: " + ex.getMessage(), ex) ;
             System.exit(1) ;
         }
-
-        ServletContextHandler context = (ServletContextHandler)server.getHandler() ;
+        X_Config.addJMX() ;
     }
 
     /**
@@ -150,7 +131,7 @@ public class SPARQLServer {
         } catch (Exception ex) {
             Fuseki.serverLog.warn("SPARQLServer: Exception while stopping server: " + ex.getMessage(), ex) ;
         }
-        removeJMX() ;
+        X_Config.removeJMX() ;
     }
 
     /**
@@ -167,15 +148,6 @@ public class SPARQLServer {
     }
 
     /**
-     * Get the datasets associated with the server.
-     * @return returns the datasets via {@link org.apache.jena.fuseki.server.ServerConfig#datasets        
-}
-     */
-    public List<DatasetRef> getDatasets() {
-        return serverConfig.datasets ;
-    }
-
-    /**
      * Obtain the {@link org.apache.jena.fuseki.server.ServerConfig}
      * @return ServerConfig
      */
@@ -292,24 +264,6 @@ public class SPARQLServer {
         return context ;
     }
 
-    private static List<String> ListOfEmptyString = Arrays.asList("") ;
-
-    private void configureOneDataset(ServletContextHandler context, DatasetRef dsDesc, boolean enableCompression) {
-        
-        String datasetPath = DatasetRef.canocialDatasetPath(dsDesc.name) ;
-        registerDataset(datasetPath, dsDesc) ;
-        // Add JMX beans to record dataset and it's services.
-        addJMX(dsDesc) ;
-    }
-
-    public static void registerDataset(String datasetPath, DatasetRef dsDesc) {
-        dsDesc.enable() ;
-        if ( DatasetRegistry.get().isRegistered(datasetPath) )
-            throw new FusekiConfigException("Already registered: key = "+datasetPath) ;
-        DatasetRegistry.get().put(datasetPath, dsDesc) ;
-        serverLog.info(format("Dataset path = %s", datasetPath)) ;
-    }
-    
     private static Server configServer(String jettyConfig) {
         try {
             serverLog.info("Jetty server config file = " + jettyConfig) ;
@@ -413,38 +367,4 @@ public class SPARQLServer {
         if ( enableCompression )
             context.addFilter(GzipFilter.class, pathSpec, EnumSet.allOf(DispatcherType.class)) ;
     }
-
-    private void addJMX() {
-        DatasetRegistry registry = DatasetRegistry.get() ;
-        for (String ds : registry.keys()) {
-            DatasetRef dsRef = registry.get(ds) ;
-            addJMX(dsRef) ;
-        }
-    }
-
-    private void addJMX(DatasetRef dsRef) {
-        String x = dsRef.name ;
-        // if ( x.startsWith("/") )
-        // x = x.substring(1) ;
-        ARQMgt.register(Fuseki.PATH + ".dataset:name=" + x, dsRef) ;
-        // For all endpoints
-        for (ServiceRef sRef : dsRef.getServiceRefs()) {
-            ARQMgt.register(Fuseki.PATH + ".dataset:name=" + x + "/" + sRef.name, sRef) ;
-        }
-    }
-
-    private void removeJMX() {
-        DatasetRegistry registry = DatasetRegistry.get() ;
-        for (String ds : registry.keys()) {
-            DatasetRef ref = registry.get(ds) ;
-        }
-    }
-
-    private void removeJMX(DatasetRef dsRef) {
-        String x = dsRef.getName() ;
-        ARQMgt.unregister(Fuseki.PATH + ".dataset:name=" + x) ;
-        for (ServiceRef sRef : dsRef.getServiceRefs()) {
-            ARQMgt.unregister(Fuseki.PATH + ".dataset:name=" + x + "/" + sRef.name) ;
-        }
-    }
 }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java Tue Dec 17 18:28:26 2013
@@ -171,8 +171,8 @@ public abstract class SPARQL_UberServlet
         if ( ! hasTrailing && ! hasParams )
         {
             // Check enabled.  But no trailing here.
-            // if ( serviceDispatch(action, desc.readGraphStore, trailing, restQuads_R) ) return ;
             // if ( serviceDispatch(action, desc.readWriteGraphStore, trailing, restQuads_RW) ) return ;
+            // if ( serviceDispatch(action, desc.readGraphStore, trailing, restQuads_R) ) return ;
             restQuads_RW.executeLifecycle(action) ;
             return ;
         }

Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/ServerTest.java Tue Dec 17 18:28:26 2013
@@ -102,14 +102,26 @@ public class ServerTest
     {
         DatasetGraph dsg = DatasetGraphFactory.createMem() ;
         // This must agree with ServerTest
-        ServerConfig conf = FusekiConfig.defaultConfiguration(ServerTest.datasetPath, dsg, true, true) ;
-        conf.port = ServerTest.port ;
-        conf.pagesPort = ServerTest.port ;
-        
-        server = new SPARQLServer(conf) ;
+        ServerConfig config = make(dsg, true, true) ;
+        server = new SPARQLServer(config) ;
+        X_Config.configureDatasets(config.datasets) ;
         server.start() ;
     }
     
+    public static ServerConfig make(DatasetGraph dsg, boolean allowUpdate, boolean listenLocal) {
+        ServerConfig config = new ServerConfig() ;
+        config.datasets = FusekiConfig.defaultConfiguration(ServerTest.datasetPath, dsg, allowUpdate, listenLocal) ;
+        config.port = ServerTest.port ;
+        config.mgtPort = ServerTest.port ;
+        config.pagesPort = ServerTest.port ;
+        config.loopback = false ;
+        config.jettyConfigFile = null ;
+        config.pages = Fuseki.PagesStatic ;
+        config.enableCompression = true ;
+        config.verboseLogging = false ;
+        return config ;
+    }
+    
     protected static void teardownServer() {
         if ( server != null )
             server.stop() ;

Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAuth.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAuth.java?rev=1551649&r1=1551648&r2=1551649&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAuth.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAuth.java Tue Dec 17 18:28:26 2013
@@ -34,7 +34,6 @@ import org.apache.jena.atlas.web.auth.Sc
 import org.apache.jena.atlas.web.auth.ServiceAuthenticator ;
 import org.apache.jena.atlas.web.auth.SimpleAuthenticator ;
 import org.apache.jena.fuseki.server.DatasetRegistry ;
-import org.apache.jena.fuseki.server.FusekiConfig ;
 import org.apache.jena.fuseki.server.SPARQLServer ;
 import org.apache.jena.fuseki.server.ServerConfig ;
 import org.junit.AfterClass ;
@@ -85,12 +84,13 @@ public class TestAuth extends ServerTest
 
         DatasetGraph dsg = DatasetGraphFactory.createMem();
         // This must agree with ServerTest
-        ServerConfig conf = FusekiConfig.defaultConfiguration(datasetPath, dsg, true, true);
+        ServerConfig conf = ServerTest.make(dsg, true, true);
         conf.port = ServerTest.port;
         conf.pagesPort = ServerTest.port;
         conf.authConfigFile = realmFile.getAbsolutePath();
 
         server = new SPARQLServer(conf);
+        X_Config.configureDatasets(conf.datasets) ;
         server.start();
     }