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 2014/03/22 11:39:13 UTC
svn commit: r1580186 - in /jena/branches/jena-fuseki-new-ui: src-dev/dev/
src/main/java/org/apache/jena/fuseki/
src/main/java/org/apache/jena/fuseki/build/
src/main/java/org/apache/jena/fuseki/mgt/
src/main/java/org/apache/jena/fuseki/server/ src/test/...
Author: andy
Date: Sat Mar 22 10:39:13 2014
New Revision: 1580186
URL: http://svn.apache.org/r1580186
Log:
Clean split HOME and BASE areas
Modified:
jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.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/build/DataServiceDesc.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/TemplateFunctions.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/server/FusekiServer.java
jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/FileSender.java
Modified: jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java?rev=1580186&r1=1580185&r2=1580186&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java (original)
+++ jena/branches/jena-fuseki-new-ui/src-dev/dev/RunFuseki2.java Sat Mar 22 10:39:13 2014
@@ -26,8 +26,7 @@ import org.apache.jena.fuseki.server.Fus
public class RunFuseki2
{
- public static void main(String[] args)
- {
+ public static void main(String[] args) throws Exception {
//demo() ;
//FusekiCmd.main("--config=config.ttl") ; System.exit(0) ;
main1() ;
@@ -70,7 +69,10 @@ public class RunFuseki2
FusekiCmd.main(
// "-v",
- "--update", "--memtdb", "--mgt", "/ds"
+ //"--update", "--memtdb", "--mgt", "/ds"
+
+ "--update", "--mem", "--mgt", "/ds"
+
//"--update", "--loc="+tmpdir+"DB", "--set=tdb:unionDefaultGraph=true", "/ds"
//"--update", "--mem", "/ds"
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=1580186&r1=1580185&r2=1580186&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 Sat Mar 22 10:39:13 2014
@@ -21,7 +21,6 @@ package org.apache.jena.fuseki ;
import java.util.List ;
import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.Lib ;
import org.apache.jena.fuseki.build.Template ;
import org.apache.jena.fuseki.jetty.JettyServerConfig ;
import org.apache.jena.fuseki.jetty.SPARQLServer ;
@@ -57,25 +56,25 @@ public class FusekiCmd {
}
static class FusekiCmdInner extends CmdARQ {
- private static ArgDecl argMgt = new ArgDecl(ArgDecl.NoValue, "mgt") ;
- private static ArgDecl argMgtPort = new ArgDecl(ArgDecl.HasValue, "mgtPort", "mgtport") ;
- private static ArgDecl argMem = new ArgDecl(ArgDecl.NoValue, "mem") ;
- private static ArgDecl argAllowUpdate = new ArgDecl(ArgDecl.NoValue, "update", "allowUpdate") ;
- private static ArgDecl argFile = new ArgDecl(ArgDecl.HasValue, "file") ;
- private static ArgDecl argMemTDB = new ArgDecl(ArgDecl.NoValue, "memtdb", "memTDB") ;
- private static ArgDecl argTDB = new ArgDecl(ArgDecl.HasValue, "loc", "location") ;
- private static ArgDecl argPort = new ArgDecl(ArgDecl.HasValue, "port") ;
- private static ArgDecl argLocalhost = new ArgDecl(ArgDecl.NoValue, "localhost", "local") ;
- private static ArgDecl argTimeout = new ArgDecl(ArgDecl.HasValue, "timeout") ;
- private static ArgDecl argFusekiConfig = new ArgDecl(ArgDecl.HasValue, "config", "conf") ;
- private static ArgDecl argJettyConfig = new ArgDecl(ArgDecl.HasValue, "jetty-config") ;
- private static ArgDecl argGZip = new ArgDecl(ArgDecl.HasValue, "gzip") ;
+ private static ArgDecl argMgt = new ArgDecl(ArgDecl.NoValue, "mgt") ;
+ private static ArgDecl argMgtPort = new ArgDecl(ArgDecl.HasValue, "mgtPort", "mgtport") ;
+ private static ArgDecl argMem = new ArgDecl(ArgDecl.NoValue, "mem") ;
+ private static ArgDecl argAllowUpdate = new ArgDecl(ArgDecl.NoValue, "update", "allowUpdate") ;
+ private static ArgDecl argFile = new ArgDecl(ArgDecl.HasValue, "file") ;
+ private static ArgDecl argMemTDB = new ArgDecl(ArgDecl.NoValue, "memtdb", "memTDB") ;
+ private static ArgDecl argTDB = new ArgDecl(ArgDecl.HasValue, "loc", "location") ;
+ private static ArgDecl argPort = new ArgDecl(ArgDecl.HasValue, "port") ;
+ private static ArgDecl argLocalhost = new ArgDecl(ArgDecl.NoValue, "localhost", "local") ;
+ private static ArgDecl argTimeout = new ArgDecl(ArgDecl.HasValue, "timeout") ;
+ private static ArgDecl argFusekiConfig = new ArgDecl(ArgDecl.HasValue, "config", "conf") ;
+ private static ArgDecl argJettyConfig = new ArgDecl(ArgDecl.HasValue, "jetty-config") ;
+ private static ArgDecl argGZip = new ArgDecl(ArgDecl.HasValue, "gzip") ;
// Deprecated. Use shiro.
- private static ArgDecl argBasicAuth = new ArgDecl(ArgDecl.HasValue, "basic-auth") ;
+ private static ArgDecl argBasicAuth = new ArgDecl(ArgDecl.HasValue, "basic-auth") ;
- private static ArgDecl argHome = new ArgDecl(ArgDecl.HasValue, "home") ;
- private static ArgDecl argPages = new ArgDecl(ArgDecl.HasValue, "pages") ;
+ private static ArgDecl argHome = new ArgDecl(ArgDecl.HasValue, "home") ;
+ private static ArgDecl argPages = new ArgDecl(ArgDecl.HasValue, "pages") ;
// private static ModLocation modLocation = new ModLocation() ;
private static ModDatasetAssembler modDataset = new ModDatasetAssembler() ;
@@ -181,6 +180,7 @@ public class FusekiCmd {
log.info("Dataset: in-memory") ;
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.templateFile = Template.templateMemFN ;
+ //
}
if ( contains(argFile) ) {
@@ -201,9 +201,10 @@ public class FusekiCmd {
}
if ( contains(argMemTDB) ) {
- log.info("TDB dataset: in-memory") ;
+ //log.info("TDB dataset: in-memory") ;
cmdLineDataset = new ServerInitialConfig() ;
cmdLineDataset.templateFile = Template.templateTDBMemFN ;
+ cmdLineDataset.params.put(Template.DIR, Names.memName) ;
}
if ( contains(argTDB) ) {
@@ -211,13 +212,6 @@ public class FusekiCmd {
cmdLineDataset.templateFile = Template.templateTDBDirFN ;
String dir = getValue(argTDB) ;
- if ( Lib.equal(dir, Names.memName) ) {
- log.info("TDB dataset: in-memory") ;
- } else {
- if ( !FileOps.exists(dir) )
- throw new CmdException("Directory not found: " + dir) ;
- log.info("TDB dataset: directory=" + dir) ;
- }
cmdLineDataset.params.put(Template.DIR, dir) ;
}
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/DataServiceDesc.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/DataServiceDesc.java?rev=1580186&r1=1580185&r2=1580186&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/DataServiceDesc.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/DataServiceDesc.java Sat Mar 22 10:39:13 2014
@@ -36,12 +36,13 @@ import com.hp.hpl.jena.sparql.util.FmtUt
import com.hp.hpl.jena.sparql.util.TypeNotUniqueException ;
import com.hp.hpl.jena.sparql.util.graph.GraphUtils ;
+// Check whether this is used or needed
public abstract class DataServiceDesc
{
public static DataServiceDesc createFromTemplate(String templateFile, String dbName) {
Map<String, String> params = new HashMap<>() ;
params.put(Template.NAME, dbName) ;
- String template = TemplateFunctions.template(templateFile, params) ;
+ String template = TemplateFunctions.templateFile(templateFile, params) ;
Lang lang = RDFLanguages.filenameToLang(templateFile, Lang.TTL) ;
StringReader sr = new StringReader(template) ;
return create(sr, lang) ;
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/TemplateFunctions.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/TemplateFunctions.java?rev=1580186&r1=1580185&r2=1580186&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/TemplateFunctions.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/build/TemplateFunctions.java Sat Mar 22 10:39:13 2014
@@ -19,6 +19,7 @@
package org.apache.jena.fuseki.build;
import java.io.IOException ;
+import java.io.InputStream ;
import java.util.Map ;
import java.util.Map.Entry ;
@@ -29,14 +30,35 @@ import com.hp.hpl.jena.util.FileUtils ;
public class TemplateFunctions
{
- /** Read a template file, substitute for {NAME} and return the model. */
- public static String template(String templateFile, Map<String, String> params) {
+ /** Read in a template from a file, substitute for {NAME} and return the string. */
+ public static String templateFile(String templateFile, Map<String, String> params) {
String template ;
try { template = FileUtils.readWholeFileAsUTF8(templateFile) ; }
catch (IOException ex) {
Fuseki.serverLog.error("File not found: "+templateFile);
IO.exception(ex); return null ;
}
+ return templateString(template, params) ;
+ }
+
+ /** Read a template file, substitute for {NAME} and return the model. */
+ public static String templateResource(String resourceName, Map<String, String> params) {
+ String template ;
+ try {
+ InputStream in = TemplateFunctions.class.getClassLoader().getResourceAsStream(resourceName) ;
+ if ( in == null )
+ Fuseki.serverLog.error("Resource not found: "+resourceName);
+ template = FileUtils.readWholeFileAsUTF8(in) ;
+ }
+ catch (IOException ex) {
+ Fuseki.serverLog.error("Error reading resource: "+resourceName);
+ IO.exception(ex); return null ;
+ }
+ return templateString(template, params) ;
+ }
+
+ /** Create a template from a String */
+ public static String templateString(String template, Map<String, String> params) {
for ( Entry<String, String> e : params.entrySet() ) {
template = template.replaceAll("\\{"+e.getKey()+"\\}", e.getValue()) ;
}
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=1580186&r1=1580185&r2=1580186&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 Sat Mar 22 10:39:13 2014
@@ -305,9 +305,9 @@ public class ActionDatasets extends Acti
String template = null ;
if ( dbType.equalsIgnoreCase(tDatabasetTDB))
- template = TemplateFunctions.template(Template.templateTDBFN, params) ;
+ template = TemplateFunctions.templateFile(Template.templateTDBFN, params) ;
if ( dbType.equalsIgnoreCase(tDatabasetMem))
- template = TemplateFunctions.template(Template.templateMemFN, params) ;
+ template = TemplateFunctions.templateFile(Template.templateMemFN, params) ;
RDFDataMgr.parse(dest, new StringReader(template), "http://base/", Lang.TTL) ;
}
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java?rev=1580186&r1=1580185&r2=1580186&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java Sat Mar 22 10:39:13 2014
@@ -19,16 +19,23 @@
package org.apache.jena.fuseki.server;
import java.io.File ;
+import java.io.FilenameFilter ;
+import java.io.IOException ;
import java.io.StringReader ;
+import java.nio.file.Files ;
import java.nio.file.Path ;
import java.nio.file.Paths ;
+import java.nio.file.StandardCopyOption ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
+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.InternalErrorException ;
+import org.apache.jena.atlas.lib.Lib ;
import org.apache.jena.fuseki.Fuseki ;
import org.apache.jena.fuseki.FusekiConfigException ;
import org.apache.jena.fuseki.build.Builder ;
@@ -39,9 +46,11 @@ import org.apache.jena.fuseki.servlets.S
import org.apache.jena.riot.Lang ;
import org.apache.jena.riot.RDFDataMgr ;
import org.apache.jena.riot.RDFLanguages ;
+import arq.cmd.CmdException ;
import com.hp.hpl.jena.rdf.model.* ;
import com.hp.hpl.jena.sparql.core.DatasetGraph ;
+import com.hp.hpl.jena.tdb.sys.Names ;
public class FusekiServer
{
@@ -50,6 +59,13 @@ public class FusekiServer
/** Root of the varying files in this deployment. Often $FUSEKI_HOME/run */
public static Path FUSEKI_BASE = null ;
+ private static FilenameFilter filterConfig = new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ return name.startsWith("config") ;
+ }
+ } ;
+
// Relative names of directories
private static final String runArea = "run" ;
private static final String databasesLocationBase = "databases" ;
@@ -95,7 +111,10 @@ public class FusekiServer
String x1 = System.getenv("FUSEKI_HOME") ;
if ( x1 != null )
FUSEKI_HOME = Paths.get(x1) ;
+ else
+ FUSEKI_HOME = Paths.get("") ;
}
+
if ( FUSEKI_BASE == null ) {
String x2 = System.getenv("FUSEKI_BASE") ;
if ( x2 != null )
@@ -104,21 +123,47 @@ public class FusekiServer
FUSEKI_BASE = FUSEKI_HOME.resolve(runArea) ;
}
+ FUSEKI_HOME = FUSEKI_HOME.toAbsolutePath() ;
+ FUSEKI_BASE = FUSEKI_BASE.toAbsolutePath() ;
+
+ Fuseki.configLog.info("FUSEKI_HOME="+FUSEKI_HOME.toString());
+ Fuseki.configLog.info("FUSEKI_BASE="+FUSEKI_BASE.toString());
+
mustExist(FUSEKI_HOME) ;
- dirTemplates = makePath(FUSEKI_HOME, templatesNameBase) ;
- mustExist(dirTemplates) ;
+
+ // Copy in defaults?
+ Path dirTemplatesMasters = makePath(FUSEKI_HOME, templatesNameBase) ;
+ mustExist(dirTemplatesMasters) ;
ensureDir(FUSEKI_BASE) ;
- dirBackups = makePath(FUSEKI_BASE, backupDirNameBase) ;
- dirConfiguration = makePath(FUSEKI_BASE, configDirNameBase) ;
- dirLogs = makePath(FUSEKI_BASE, logsNameBase) ;
- dirSystemDatabase = makePath(FUSEKI_BASE, systemDatabaseNameBase) ;
- dirFileArea = makePath(FUSEKI_BASE, systemFileAreaBase) ;
- ensureDir(dirBackups) ;
- ensureDir(dirConfiguration) ;
- ensureDir(dirLogs) ;
- ensureDir(dirSystemDatabase) ;
- ensureDir(dirFileArea) ;
+
+ dirTemplates = makePath(FUSEKI_BASE, templatesNameBase) ;
+ boolean copyTemplates = ! exists(dirTemplates) ;
+ ensureDir(dirTemplates) ;
+
+ dirBackups = makePathEnsureDir(FUSEKI_BASE, backupDirNameBase) ;
+ dirConfiguration = makePathEnsureDir(FUSEKI_BASE, configDirNameBase) ;
+ dirLogs = makePathEnsureDir(FUSEKI_BASE, logsNameBase) ;
+ dirSystemDatabase = makePathEnsureDir(FUSEKI_BASE, systemDatabaseNameBase) ;
+ dirFileArea = makePathEnsureDir(FUSEKI_BASE, systemFileAreaBase) ;
+
+ if ( copyTemplates )
+ copyFileFilter(dirTemplatesMasters, dirTemplates, filterConfig) ;
+ }
+
+ private static void copyFileFilter(Path srcDir, Path dstDir, FilenameFilter filterConfig) {
+ String[] files = srcDir.toFile().list(filterConfig) ;
+ for ( String fn : files )
+ {
+ try {
+ Path src = srcDir.resolve(fn) ;
+ Path dst = dstDir.resolve(fn) ;
+ Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES) ;
+ } catch (IOException e) {
+ IO.exception("Failed to copy directory of files "+srcDir, e);
+ e.printStackTrace();
+ }
+ }
}
public static void initializeDataAccessPoints(ServerInitialConfig initialSetup, String configDir) {
@@ -160,6 +205,17 @@ public class FusekiServer
datasets.add(dap) ;
} else if ( params.templateFile != null ) {
Fuseki.configLog.info("Template file: " + params.templateFile) ;
+ String dir = params.params.get(Template.DIR) ;
+ if ( dir != null ) {
+ if ( Lib.equal(dir, Names.memName) ) {
+ Fuseki.configLog.info("TDB dataset: in-memory") ;
+ } else {
+ if ( !FileOps.exists(dir) )
+ throw new CmdException("Directory not found: " + dir) ;
+ Fuseki.configLog.info("TDB dataset: directory=" + dir) ;
+ }
+ }
+
DataAccessPoint dap = configFromTemplate(params.templateFile, params.datasetPath, params.params) ;
datasets.add(dap) ;
}
@@ -183,7 +239,7 @@ public class FusekiServer
}
}
- String str = TemplateFunctions.template(templateFile, params) ;
+ String str = TemplateFunctions.templateFile(templateFile, params) ;
Lang lang = RDFLanguages.filenameToLang(str, Lang.TTL) ;
StringReader sr = new StringReader(str) ;
Model model = ModelFactory.createDefaultModel() ;
@@ -241,7 +297,18 @@ public class FusekiServer
if ( ! dir.isDirectory())
throw new FusekiConfigException("Not a directory: "+directory) ;
}
+
+ private static boolean exists(Path directory) {
+ File dir = directory.toFile() ;
+ return dir.exists() ;
+ }
+ private static Path makePathEnsureDir(Path root , String relName ) {
+ Path p = makePath(root, relName) ;
+ ensureDir(p);
+ return p ;
+ }
+
private static Path makePath(Path root , String relName ) {
Path path = root.resolve(relName) ;
// Must exist
Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/FileSender.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/FileSender.java?rev=1580186&r1=1580185&r2=1580186&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/FileSender.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/FileSender.java Sat Mar 22 10:39:13 2014
@@ -30,7 +30,7 @@ import org.apache.jena.atlas.io.IO ;
public class FileSender {
// HttpClient 4.3 has MultipartEntity but the 4.2->4.3 change is less
- // than trivial (and it seems some environemnt fix the HttpClient)
+ // than trivial (and it seems some environment fix the HttpClient)
// so here's some code for testing support.
// MultipartEntity entity = new MultipartEntity();
// entity.addPart(...)