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();
}