You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2015/01/14 11:32:26 UTC
[84/93] [abbrv] jena git commit: Add a "mode" setting for environment
setup default values.
Add a "mode" setting for environment setup default values.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/ecdcd0d9
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/ecdcd0d9
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/ecdcd0d9
Branch: refs/heads/hadoop-rdf
Commit: ecdcd0d9c3d3da30841aabf27c3d62d093e204c7
Parents: 612c1bc
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Jan 12 13:55:32 2015 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Mon Jan 12 13:55:32 2015 +0000
----------------------------------------------------------------------
.../org/apache/jena/fuseki/cmd/FusekiCmd.java | 2 +
.../apache/jena/fuseki/server/FusekiEnv.java | 78 ++++++++++++++++----
.../apache/jena/fuseki/server/FusekiServer.java | 2 +-
3 files changed, 67 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/ecdcd0d9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
index a7cb0d4..243bf2e 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/cmd/FusekiCmd.java
@@ -26,6 +26,7 @@ import org.apache.jena.fuseki.FusekiLogging ;
import org.apache.jena.fuseki.build.Template ;
import org.apache.jena.fuseki.jetty.JettyServerConfig ;
import org.apache.jena.fuseki.jetty.JettyFuseki ;
+import org.apache.jena.fuseki.server.FusekiEnv ;
import org.apache.jena.fuseki.server.FusekiServerListener ;
import org.apache.jena.fuseki.server.ServerInitialConfig ;
import org.apache.jena.riot.Lang ;
@@ -51,6 +52,7 @@ public class FusekiCmd {
// statics of a class are run.
static {
+ FusekiEnv.mode = FusekiEnv.INIT.STANDALONE ;
FusekiLogging.setLogging() ;
}
http://git-wip-us.apache.org/repos/asf/jena/blob/ecdcd0d9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
index a76be11..70889ea 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
@@ -29,6 +29,51 @@ import java.nio.file.Paths ;
* @See FusekiServer
*/
public class FusekiEnv {
+ // Initialization logging happens via stdout/stderr directly.
+ // Fuseki logging is not initialized to avoid going in circles.
+
+ private static final boolean LogInit = false ;
+
+ /** Unused */
+ // public static final String DFT_FUSEKI_HOME = isWindows
+ // ? /*What's correct here?*/ "/usr/share/fuseki"
+ // : "/usr/share/fuseki" ;
+ static final boolean isWindows = determineIfWindows() ;
+ static final String DFT_FUSEKI_BASE = isWindows ? /* What's correct here? */"/etc/fuseki" : "/etc/fuseki" ;
+
+ /** Initialization mode, depending on the way Fuseki is started:
+ <ul>
+ <li>{@code WAR} - Running as a WAR file.</li>
+ <li>{@code EMBEDDED}</li>
+ <li>{@code STANDALONE} - Running as the standalone server in Jetty</li>
+ <li>{@code TEST} - Running inside maven/JUnit and as the standalone server</li>
+ <li>{@code UNSET} - Initial state.</li>
+ </ul>
+ <p>
+ If at server initialization, the MODE is UNSET, then assume WAR setup.
+ A WAR file does not have the opportunity to set the mode.
+ <p>
+ TEST: (better to set FUSEKI_HOME, FUSEKI_BASE from the test environment</li>
+ */
+ public enum INIT {
+ // Default values of FUSEKI_HOME, and FUSEKI_BASE.
+ WAR (null, "/etc/fuseki") ,
+ EMBEDDED (".", "run") ,
+ STANDALONE (".", "run") ,
+ TEST ("src/main/webapp", "target/run") ,
+ UNSET (null, null) ;
+
+ final String dftFusekiHome ;
+ final String dftFusekiBase ;
+
+ INIT(String home, String base) {
+ this.dftFusekiHome = home ;
+ this.dftFusekiBase = base ;
+ }
+ }
+
+ public static INIT mode = INIT.UNSET ;
+
/** Root of the Fuseki installation for fixed files.
* This may be null (e.g. running inside a web application container) */
public static Path FUSEKI_HOME = null ;
@@ -38,8 +83,6 @@ public class FusekiEnv {
*/
public static Path FUSEKI_BASE = null ;
- static final boolean isWindows = determineIfWindows() ;
-
// Copied from SystemTDB to avoid dependency.
// This code must not touch Jena.
private static boolean determineIfWindows() {
@@ -49,41 +92,43 @@ public class FusekiEnv {
return s.startsWith("Windows ") ;
}
- /** Unused */
- // public static final String DFT_FUSEKI_HOME = isWindows
- // ? /*What's correct here?*/ "/usr/share/fuseki"
- // : "/usr/share/fuseki" ;
- static final String DFT_FUSEKI_BASE = isWindows ? /* What's correct here? */"/etc/fuseki" : "/etc/fuseki" ;
-
public static final String ENV_runArea = "run" ;
private static boolean initialized = false ;
- private static final boolean LogInit = false ;
-
public static synchronized void setEnvironment() {
if ( initialized )
return ;
initialized = true ;
- logInit("FusekiInitEnv") ;
- logInit("Start: ENV_FUSEKI_HOME = %s : ENV_FUSEKI_BASE = %s", FUSEKI_HOME, FUSEKI_BASE) ;
+ logInit("FusekiEnv:Start: ENV_FUSEKI_HOME = %s : ENV_FUSEKI_BASE = %s : MODE = %s", FUSEKI_HOME, FUSEKI_BASE, mode) ;
+
+ if ( mode == null || mode == INIT.UNSET )
+ mode = INIT.WAR ;
+
if ( FUSEKI_HOME == null ) {
// Make absolute
String x1 = getenv("FUSEKI_HOME") ;
+ if ( x1 == null )
+ x1 = mode.dftFusekiHome ;
if ( x1 != null )
FUSEKI_HOME = Paths.get(x1) ;
}
if ( FUSEKI_BASE == null ) {
String x2 = getenv("FUSEKI_BASE") ;
+ if ( x2 == null )
+ x2 = mode.dftFusekiBase ;
if ( x2 != null )
FUSEKI_BASE = Paths.get(x2) ;
else {
if ( FUSEKI_HOME != null )
FUSEKI_BASE = FUSEKI_HOME.resolve(ENV_runArea) ;
- else
+ else {
+ // This is bad - there should have been a default by now.
+ logInitError("Can't find a setting for FUSEKI_BASE - guessing wildy") ;
// Neither FUSEKI_HOME nor FUSEKI_BASE set.
FUSEKI_BASE = Paths.get(DFT_FUSEKI_BASE) ;
+ }
}
}
@@ -92,7 +137,7 @@ public class FusekiEnv {
FUSEKI_BASE = FUSEKI_BASE.toAbsolutePath() ;
- logInit("Finish: ENV_FUSEKI_HOME = %s : ENV_FUSEKI_BASE = %s", FUSEKI_HOME, FUSEKI_BASE) ;
+ logInit("FusekiEnv:Finish: ENV_FUSEKI_HOME = %s : ENV_FUSEKI_BASE = %s", FUSEKI_HOME, FUSEKI_BASE) ;
}
private static void logInit(String fmt, Object ... args) {
@@ -102,6 +147,11 @@ public class FusekiEnv {
}
}
+ private static void logInitError(String fmt, Object ... args) {
+ System.err.printf(fmt, args) ;
+ System.err.println() ;
+ }
+
/** Get environment variable value (maybe in system properties) */
public static String getenv(String name) {
String x = System.getenv(name) ;
http://git-wip-us.apache.org/repos/asf/jena/blob/ecdcd0d9/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
index a466b8b..b125fbe 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiServer.java
@@ -53,7 +53,7 @@ import com.hp.hpl.jena.tdb.sys.Names ;
public class FusekiServer
{
- // Initialization of FUSEKI_HOME and FUSEKI_BASE is done in FusekiEnvInit
+ // Initialization of FUSEKI_HOME and FUSEKI_BASE is done in FusekiEnv.setEnvironment()
// so that the code is independent of any logging. FusekiLogging can use
// initialized values of FUSEKI_BASE while looking forlog4j configuration.