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/11/08 17:34:44 UTC

[01/13] jena git commit: StoreParams enabled in DatasetBuilderStd

Repository: jena
Updated Branches:
  refs/heads/master d910ff4ab -> 4a45e3617


StoreParams enabled in DatasetBuilderStd

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

Branch: refs/heads/master
Commit: 74b75f380f82f5e0078246711a8a41401413af8a
Parents: aae3f23
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Nov 5 14:38:39 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Nov 5 15:06:44 2014 +0000

----------------------------------------------------------------------
 .../java/com/hp/hpl/jena/tdb/setup/Build.java   |  4 +--
 .../hpl/jena/tdb/setup/DatasetBuilderStd.java   | 16 +++++++++--
 .../com/hp/hpl/jena/tdb/setup/StoreParams.java  |  2 +-
 .../hpl/jena/tdb/setup/StoreParamsBuilder.java  | 30 +++++++++++++-------
 .../hpl/jena/tdb/setup/StoreParamsDynamic.java  |  3 ++
 .../hp/hpl/jena/tdb/setup/TestStoreParams.java  | 18 ++++++++----
 6 files changed, 51 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
index 4bd2157..ddb98d2 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
@@ -48,7 +48,7 @@ public class Build
         // XXX replace with:
         // return DatasetBuilderStd.stdBuilder().makeTupleIndex(location, indexName, primary, indexOrder) ;
         // All this to BuilderDB.
-        StoreParamsBuilder spb = new StoreParamsBuilder() ;
+        StoreParamsBuilder spb = StoreParamsBuilder.create() ;
         spb.blockReadCacheSize(readCacheSize) ;
         spb.blockWriteCacheSize(writeCacheSize) ;
         RecordFactory recordFactory = new RecordFactory(dftKeyLength, dftValueLength) ;
@@ -77,7 +77,7 @@ public class Build
                                           String indexNode2Id, int node2NodeIdCacheSize,
                                           String indexId2Node, int nodeId2NodeCacheSize,
                                           int sizeNodeMissCacheSize) {
-        StoreParamsBuilder spb = new StoreParamsBuilder() ;
+        StoreParamsBuilder spb = StoreParamsBuilder.create() ;
         spb.indexNode2Id(indexNode2Id).node2NodeIdCacheSize(node2NodeIdCacheSize) ;
         spb.indexId2Node(indexId2Node).nodeId2NodeCacheSize(nodeId2NodeCacheSize) ;
         DatasetBuilderStd dbBuild = DatasetBuilderStd.stdBuilder() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
index ae903ca..38173b5 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
@@ -73,9 +73,19 @@ public class DatasetBuilderStd implements DatasetBuilder {
     }
     
     public static DatasetGraphTDB create(Location location, StoreParams $params) {
-        if ( $params != null )
-            log.warn("StoreParams != null (ignored)") ;
         StoreParams params = paramsForLocation(location) ;
+        // ---- Experimental
+        if ( ! location.isMem() && $params != null ) {
+            if ( FileOps.existsAnyFiles(location.getDirectoryPath()) )
+                params = StoreParamsBuilder.modify(params, $params) ;
+            else
+                params = $params ;
+            $params = null ;
+        }
+
+        // ----
+        if ( $params != null )
+            log.warn("StoreParams != null (experimental)") ;
         DatasetBuilderStd x = new DatasetBuilderStd() ;
         x.standardSetup() ;
         return x.build(location, params) ;
@@ -331,7 +341,7 @@ public class DatasetBuilderStd implements DatasetBuilder {
     }
     
     protected NodeTable makeNodeTableNoCache(Location location, String indexNode2Id, String indexId2Node, StoreParams params) {
-        StoreParamsBuilder spb = new StoreParamsBuilder(params) ;
+        StoreParamsBuilder spb = StoreParamsBuilder.create(params) ;
         spb.node2NodeIdCacheSize(-1) ;
         spb.nodeId2NodeCacheSize(-1) ;
         spb.nodeMissCacheSize(-1) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
index 7d06f82..8790c9b 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
@@ -30,7 +30,7 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
 {
     // SystemParams are built with a SystemParamsBuilder
     
-    private static StoreParams dftStoreParams = new StoreParamsBuilder().build() ;
+    private static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
     
     /* These are items you can change JVM to JVM */
     

http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
index 0fa5d42..e0ceda7 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
@@ -63,7 +63,13 @@ public class StoreParamsBuilder {
 
     private String             prefixId2Node         = StoreParamsConst.prefixId2Node ;
 
-    public static StoreParamsBuilder create() { return new StoreParamsBuilder() ; }
+    public static StoreParamsBuilder create() {
+        return new StoreParamsBuilder() ;
+    }
+
+    public static StoreParamsBuilder create(StoreParams params) {
+        return new StoreParamsBuilder(params) ;
+    }
 
     /** Using a base set of {@linkplain StoreParams}, and update with dynamic parameters.
      * 
@@ -75,6 +81,7 @@ public class StoreParamsBuilder {
     public static StoreParams modify(StoreParams baseParams, StoreParamsDynamic additionalParams) {
         return new StoreParamsBuilder(baseParams)
             .fileMode(additionalParams.getFileMode())
+            .blockSize(additionalParams.getBlockSize())
             .blockReadCacheSize(additionalParams.getBlockReadCacheSize())
             .blockWriteCacheSize(additionalParams.getBlockWriteCacheSize())
             .node2NodeIdCacheSize(additionalParams.getNode2NodeIdCacheSize())
@@ -83,8 +90,8 @@ public class StoreParamsBuilder {
             .build();
     }
     
-    public StoreParamsBuilder() {}
-    public StoreParamsBuilder(StoreParams other) {
+    private StoreParamsBuilder() {}
+    private StoreParamsBuilder(StoreParams other) {
         this.fileMode               = other.getFileMode() ;
         this.blockSize              = other.getBlockSize() ;
         this.blockReadCacheSize     = other.getBlockReadCacheSize() ;
@@ -95,16 +102,19 @@ public class StoreParamsBuilder {
 
         this.indexNode2Id           = other.getIndexNode2Id() ;
         this.indexId2Node           = other.getIndexId2Node() ;
-        this.primaryIndexTriples    = other.getPrimaryIndexPrefix() ;
-        this.tripleIndexes          = other.getQuadIndexes() ;
-        this.primaryIndexQuads      = other.getPrimaryIndexPrefix() ;
-        this.quadIndexes            = other.getPrefixIndexes() ;
-        this.primaryIndexPrefix     = other.getIndexPrefix() ;
+        
+        this.primaryIndexTriples    = other.getPrimaryIndexTriples() ;
+        this.tripleIndexes          = other.getTripleIndexes() ;
+        
+        this.primaryIndexQuads      = other.getPrimaryIndexQuads() ;
+        this.quadIndexes            = other.getQuadIndexes() ;
+        
+        this.primaryIndexPrefix     = other.getPrimaryIndexPrefix() ;
         this.prefixIndexes          = other.getPrefixIndexes() ;
         this.indexPrefix            = other.getIndexPrefix() ;
 
-        this.prefixNode2Id          = other.getIndexNode2Id() ;
-        this.prefixId2Node          = other.getIndexId2Node() ;
+        this.prefixNode2Id          = other.getPrefixNode2Id() ;
+        this.prefixId2Node          = other.getPrefixId2Node() ;
     }
     
     public StoreParams build() {

http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
index 1063bf2..ca6290a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
@@ -30,6 +30,9 @@ public interface StoreParamsDynamic {
     /** Store-wide file access mode */ 
     public FileMode getFileMode() ;
     
+    /** Block size - must agree with the original creation of the database */ 
+    public int getBlockSize() ;
+
     /** Block read cache (note: mapped files do not have a block cache) */
     public int getBlockReadCacheSize() ;
 

http://git-wip-us.apache.org/repos/asf/jena/blob/74b75f38/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
index 6612be9..1762518 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
@@ -36,11 +36,17 @@ public class TestStoreParams extends BaseTest {
     }
     
     @Test public void store_params_02() {
-        StoreParams sp = StoreParamsBuilder.create().build() ;
+        StoreParams input = StoreParams.getDftStoreParams() ;
+        StoreParams sp = StoreParamsBuilder.create(input).build() ;
         assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; 
     }
 
     @Test public void store_params_03() {
+        StoreParams sp = StoreParamsBuilder.create().build() ;
+        assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; 
+    }
+
+    @Test public void store_params_04() {
         StoreParams params = StoreParamsBuilder.create().build() ;
         StoreParams params2 = roundTrip(params) ;
         assertEqualsStoreParams(params,params2) ;
@@ -48,7 +54,7 @@ public class TestStoreParams extends BaseTest {
     
     // ----
     
-    @Test public void store_params_04() {
+    @Test public void store_params_10() {
         StoreParams params = StoreParamsBuilder.create().fileMode(FileMode.direct).blockSize(1024).build() ;
         StoreParams params2 = roundTrip(params) ;
         assertEqualsStoreParams(params,params2) ;
@@ -56,7 +62,7 @@ public class TestStoreParams extends BaseTest {
         assertEquals(params.getBlockSize(), params2.getBlockSize()) ;
     }
 
-    @Test public void store_params_05() {
+    @Test public void store_params_11() {
         String xs = "{ \"tdb.block_size\": 2048 }" ;
         JsonObject x = JSON.parse(xs) ;
         StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).build() ;
@@ -64,7 +70,7 @@ public class TestStoreParams extends BaseTest {
         assertEqualsStoreParams(paramsExpected,paramsActual) ;
     }
 
-    @Test public void store_params_06() {
+    @Test public void store_params_12() {
         String xs = "{ \"tdb.file_mode\": \"direct\" , \"tdb.block_size\": 2048 }" ;
         JsonObject x = JSON.parse(xs) ;
         StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).fileMode(FileMode.direct).build() ;
@@ -72,7 +78,7 @@ public class TestStoreParams extends BaseTest {
         assertEqualsStoreParams(paramsExpected,paramsActual) ;
     }
 
-    @Test public void store_params_07() {
+    @Test public void store_params_13() {
         String xs = "{ \"tdb.triple_indexes\" : [ \"POS\" , \"PSO\"] } " ; 
         JsonObject x = JSON.parse(xs) ;
         StoreParams params = StoreParamsCodec.decode(x) ;
@@ -81,7 +87,7 @@ public class TestStoreParams extends BaseTest {
     }
 
     @Test(expected=TDBException.class)
-    public void store_params_08() {
+    public void store_params_14() {
         String xs = "{ \"tdb.triples_indexes\" : [ \"POS\" , \"PSO\"] } " ; // Misspelt. 
         JsonObject x = JSON.parse(xs) ;
         StoreParams params = StoreParamsCodec.decode(x) ;


[10/13] jena git commit: Better exceptions from JSON parsing.

Posted by an...@apache.org.
Better exceptions from JSON parsing.

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

Branch: refs/heads/master
Commit: f53761daa5bf8bd1228cdd55d3ea2e144c7b739e
Parents: ac8a7d9
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Nov 8 16:16:50 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Nov 8 16:16:50 2014 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/jena/atlas/io/IO.java   |  3 ++-
 .../java/org/apache/jena/atlas/json/JSON.java    | 19 +++++++------------
 2 files changed, 9 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/f53761da/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java b/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
index f49e0f6..4d52fe2 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/io/IO.java
@@ -64,8 +64,9 @@ public class IO
      * If the filename ends in .gz, wrap in  GZIPInputStream  
      * @param filename
      * @throws FileNotFoundException 
+     * @throws IOException
      */
-    static public InputStream openFileEx(String filename) throws IOException {
+    static public InputStream openFileEx(String filename) throws IOException, FileNotFoundException {
         if ( filename == null || filename.equals("-") )
             return System.in ;
         if ( filename.startsWith("file:") )

http://git-wip-us.apache.org/repos/asf/jena/blob/f53761da/jena-arq/src/main/java/org/apache/jena/atlas/json/JSON.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/json/JSON.java b/jena-arq/src/main/java/org/apache/jena/atlas/json/JSON.java
index 63b680e..df3727f 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/json/JSON.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/json/JSON.java
@@ -61,20 +61,15 @@ public class JSON
     /** Read a JSON object from a file */ 
     public static JsonObject read(String filename)
     {
-        try
-        {
-            try (InputStream in = IO.openFileEx( filename ))
-            {
-                return JSON.parse( in );
-            }
+        try (InputStream in = IO.openFileEx(filename)) {
+            return JSON.parse(in) ;
         }
-        catch (FileNotFoundException ex)
-        {
-            throw new RuntimeException("File not found: "+filename, ex) ;
+        catch (FileNotFoundException ex) {
+            IO.exception("File not found: " + filename, ex) ;
+            return null ;
         }
-        catch (IOException ex)
-        {
-            IO.exception("IOException: "+filename, ex);
+        catch (IOException ex) {
+            IO.exception("IOException: " + filename, ex) ;
             return null ;
         }
     }


[12/13] jena git commit: Sync with Location changes in TDB.

Posted by an...@apache.org.
Sync with Location changes in TDB.

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

Branch: refs/heads/master
Commit: 15a93172063b7a7b2f1ba041d2263b314179d81a
Parents: 0bf2977
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Nov 8 16:32:30 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Nov 8 16:32:30 2014 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/fuseki/server/SystemState.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/15a93172/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/SystemState.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/SystemState.java b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/SystemState.java
index 8351400..ff5775d 100644
--- a/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/SystemState.java
+++ b/jena-fuseki2/src/main/java/org/apache/jena/fuseki/server/SystemState.java
@@ -56,7 +56,7 @@ public class SystemState {
         initialized = true ;
         
         if ( location == null )
-            location = new Location(FusekiServer.dirSystemDatabase.toString()) ;
+            location = Location.create(FusekiServer.dirSystemDatabase.toString()) ;
         
         if ( ! location.isMem() )
             FileOps.ensureDir(location.getDirectoryPath()) ;


[03/13] jena git commit: Switch to "Location.create" from "new Location" for directory locations.

Posted by an...@apache.org.
Switch to "Location.create" from "new Location" for directory locations.


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

Branch: refs/heads/master
Commit: 140a08890804a758cf37858a332a32f857920446
Parents: a9c7671
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Nov 5 13:40:36 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Nov 5 15:06:44 2014 +0000

----------------------------------------------------------------------
 .../jena/tdb/assembler/DatasetAssemblerTDB.java |  2 +-
 .../jena/tdb/assembler/NodeTableAssembler.java  |  4 +--
 .../jena/tdb/assembler/TDBGraphAssembler.java   |  2 +-
 .../com/hp/hpl/jena/tdb/base/file/FileSet.java  |  4 +--
 .../com/hp/hpl/jena/tdb/base/file/Location.java | 10 ++++--
 .../tdb/store/bulkloader2/CmdIndexBuild.java    |  2 +-
 .../tdb/store/bulkloader2/CmdIndexCopy.java     |  4 +--
 .../store/bulkloader2/CmdNodeTableBuilder.java  |  2 +-
 .../java/com/hp/hpl/jena/tdb/sys/DebugTDB.java  |  2 +-
 .../java/com/hp/hpl/jena/tdb/sys/TDBMaker.java  | 32 +++++++++++++-------
 jena-tdb/src/main/java/tdb/CmdRewriteIndex.java |  4 +--
 .../src/main/java/tdb/cmdline/ModLocation.java  |  2 +-
 .../main/java/tdb/cmdline/ModTDBDataset.java    |  2 +-
 .../src/main/java/tdb/tools/dumpnodetable.java  |  2 +-
 .../src/main/java/tdb/tools/tdbgenindex.java    |  4 +--
 .../jena/tdb/base/file/TestLocationLock.java    | 12 ++++----
 .../tdb/base/objectfile/TestStringFileDisk.java |  2 +-
 .../hpl/jena/tdb/extra/T_QuadsObjectIsNull.java |  2 +-
 .../jena/tdb/extra/T_TDBWriteTransaction.java   |  2 +-
 .../hp/hpl/jena/tdb/extra/T_TransSystem.java    |  6 ++--
 .../tdb/extra/T_TransSystemMultiDatasets.java   |  4 +--
 .../jena/tdb/graph/TestPrefixMappingTDB.java    |  6 ++--
 .../jena/tdb/store/TestDatasetTDBPersist.java   |  2 +-
 .../com/hp/hpl/jena/tdb/store/TestGraphTDB.java |  2 +-
 .../tdb/transaction/TestNodeTableTransDisk.java |  2 +-
 .../transaction/TestObjectFileTransStorage.java |  4 +--
 .../jena/tdb/transaction/TestTransRestart.java  |  2 +-
 .../tdb/transaction/TestTransactionTDB.java     |  2 +-
 28 files changed, 71 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/DatasetAssemblerTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/DatasetAssemblerTDB.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/DatasetAssemblerTDB.java
index 45634d5..b415c5c 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/DatasetAssemblerTDB.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/DatasetAssemblerTDB.java
@@ -54,7 +54,7 @@ public class DatasetAssemblerTDB extends DatasetAssembler
             throw new AssemblerException(root, "No location given") ;
 
         String dir = getStringValue(root, pLocation) ;
-        Location loc = new Location(dir) ;
+        Location loc = Location.create(dir) ;
         DatasetGraph dsg = TDBFactory.createDatasetGraph(loc) ;
 
         if ( root.hasProperty(pUnionDefaultGraph) ) {

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/NodeTableAssembler.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/NodeTableAssembler.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/NodeTableAssembler.java
index da9b869..cc83a99 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/NodeTableAssembler.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/NodeTableAssembler.java
@@ -42,7 +42,7 @@ public class NodeTableAssembler extends AssemblerBase //implements Assembler
 
     //private Location location = null ;
     
-    //public NodeTableAssembler()                     { this.location = new Location(".") ; }
+    //public NodeTableAssembler()                     { this.location = Location.create(".") ; }
     //public NodeTableAssembler(Location location)    { this.location = location ; }
     
     public NodeTableAssembler()                     { }
@@ -52,7 +52,7 @@ public class NodeTableAssembler extends AssemblerBase //implements Assembler
     {
         String location = getAsStringValue(root, pNodeIndex) ;
 //        if ( location != null )
-//            return NodeTableFactory.create(IndexBuilder.get(), new Location(location)) ;
+//            return NodeTableFactory.create(IndexBuilder.get(), Location.create(location)) ;
 //        
 //        String nodeIndex = getAsStringValue(root, pNodeIndex) ;
 //        String nodeData = getAsStringValue(root, pNodeData) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/TDBGraphAssembler.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/TDBGraphAssembler.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/TDBGraphAssembler.java
index 5cf11a7..3801e30 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/TDBGraphAssembler.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/assembler/TDBGraphAssembler.java
@@ -79,7 +79,7 @@ public class TDBGraphAssembler extends AssemblerBase implements Assembler
         
         if ( locationDir != null )
         {
-            Location location = new Location(locationDir) ;
+            Location location = Location.create(locationDir) ;
             ds = TDBFactory.createDataset(location) ;
         }
         else

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/FileSet.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/FileSet.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/FileSet.java
index fd5924a..55a2376 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/FileSet.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/FileSet.java
@@ -50,7 +50,7 @@ public class FileSet
     /** Create a FileSet given Location (directory) and name within the directory */  
     public FileSet(String directory, String basename)
     {
-        initFileSet(new Location(directory), basename) ;
+        initFileSet(Location.create(directory), basename) ;
     }
     
     /** Create a FileSet given Location (directory) and name within the directory */  
@@ -61,7 +61,7 @@ public class FileSet
         String fn = t.get(1) ;
         if ( dir == null )
             dir = "." ;
-        initFileSet(new Location(dir), fn) ;
+        initFileSet(Location.create(dir), fn) ;
     }
     
     /** Create a FileSet given Location (directory) and name within the directory */  

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
index 46ae71c..0d18d51 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
@@ -53,11 +53,17 @@ public class Location {
 
     /** Return a memory location with a name */
     static public Location mem(String name) {
-        Location loc = new Location() ;
+        Location loc = Location.mem() ;
         memInit(loc, name) ;
         return loc ;
     }
 
+    /** Return a location for a directory on disk */
+    static public Location create(String directoryName) {
+        Location loc = Location.create(directoryName) ;
+        return loc ;
+    }
+
     private Location() {}
 
     private static void memInit(Location location, String name) {
@@ -142,7 +148,7 @@ public class Location {
     public Location getSubLocation(String dirname) {
         String newName = pathname + dirname ;
         ensure(newName) ;
-        return new Location(newName) ;
+        return Location.create(newName) ;
     }
 
     private void ensure(String dirname) {

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexBuild.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexBuild.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexBuild.java
index 24c28d4..d64d108 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexBuild.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexBuild.java
@@ -69,7 +69,7 @@ public class CmdIndexBuild
         
         // Argument processing
         
-        Location location = new Location(locationStr) ;
+        Location location = Location.create(locationStr) ;
         
         //InputStream input = System.in ;
         InputStream input = IO.openFile(dataFile) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexCopy.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexCopy.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexCopy.java
index 0c83268..fdf04cc 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexCopy.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdIndexCopy.java
@@ -70,8 +70,8 @@ public class CmdIndexCopy
         
         // Argument processing
         
-        Location location1 = new Location(locationStr1) ;
-        Location location2 = new Location(locationStr2) ;
+        Location location1 = Location.create(locationStr1) ;
+        Location location2 = Location.create(locationStr2) ;
         
         int keyLength = SystemTDB.SizeOfNodeId * indexName1.length() ;
         int valueLength = 0 ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
index d436eac..1782de6 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
@@ -96,7 +96,7 @@ public class CmdNodeTableBuilder extends CmdGeneral
 //        if ( !super.contains(argQuadsOut) ) throw new CmdException("Required: --quads FILE") ;
         
         locationString   = super.getValue(argLocation) ;
-        location = new Location(locationString) ;
+        location = Location.create(locationString) ;
 
         dataFileTriples  = super.getValue(argTriplesOut) ;
         if ( dataFileTriples == null )

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/DebugTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/DebugTDB.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/DebugTDB.java
index 4ab8be5..a721a7f 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/DebugTDB.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/DebugTDB.java
@@ -77,7 +77,7 @@ public class DebugTDB
     
     public static void dumpNodeIndex(String dir)
     {
-        Location location = new Location(dir) ;
+        Location location = Location.create(dir) ;
         Index nodeToId = SetupTDB.makeIndex(location, Names.indexNode2Id, SystemTDB.BlockSize, SystemTDB.LenNodeHash, SystemTDB.SizeOfNodeId, -1 ,-1) ;
         for ( Record aNodeToId : nodeToId )
         {

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
index 45620e2..e966252 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/sys/TDBMaker.java
@@ -23,6 +23,7 @@ import com.hp.hpl.jena.tdb.StoreConnection ;
 import com.hp.hpl.jena.tdb.TDBFactory ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.setup.DatasetBuilderStd ;
+import com.hp.hpl.jena.tdb.setup.StoreParams ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
 import com.hp.hpl.jena.tdb.transaction.DatasetGraphTransaction ;
 
@@ -36,7 +37,7 @@ public class TDBMaker
     /** Create a DatasetGraph that supports transactions */  
     public static DatasetGraphTransaction createDatasetGraphTransaction(String location)
     {
-        return createDatasetGraphTransaction(new Location(location)) ;
+        return createDatasetGraphTransaction(Location.create(location)) ;
     }
     
     /** Create a Dataset that supports transactions */  
@@ -72,35 +73,44 @@ public class TDBMaker
     /* The one we are using */
     private static DatasetGraphMakerTDB builder = new BuilderStd() ;
 
-    public static DatasetGraphTDB createDatasetGraphTDB(Location loc)
-    { return builder.createDatasetGraph(loc) ; }
+    
+    public static DatasetGraphTDB createDatasetGraphTDB(Location loc, StoreParams params)
+    { return builder.createDatasetGraph(loc, params) ; }
 
+    
+    @Deprecated
+    public static DatasetGraphTDB createDatasetGraphTDB(Location loc) {
+        return createDatasetGraphTDB(loc, null) ;
+    }
+    
     // -- Different ways of doing it.
     
     /** Interface to maker of the actual implementations of TDB datasets */ 
     private interface DatasetGraphMakerTDB 
     {
         /** Create a TDB-backed dataset at a given location */
-        public DatasetGraphTDB createDatasetGraph(Location location) ;
+        public DatasetGraphTDB createDatasetGraph(Location location, StoreParams params) ;
     }
 
     /** Make directly the base DatasetGraphTDB */
     private static class BuilderStd implements DatasetGraphMakerTDB
     {
         @Override
-        public DatasetGraphTDB createDatasetGraph(Location location)
+        public DatasetGraphTDB createDatasetGraph(Location location, StoreParams params)
         {
-            return DatasetBuilderStd.create(location) ;
+            return DatasetBuilderStd.create(location, params) ;
         }
     }
     
     /** Make by creating the normal, transactional one and finding the base */ 
-    private static class BuilderBase implements DatasetGraphMakerTDB
+    private static class _BuilderBase implements DatasetGraphMakerTDB
     {
         @Override
-        public DatasetGraphTDB createDatasetGraph(Location location)
+        public DatasetGraphTDB createDatasetGraph(Location location, StoreParams params)
         {
-            DatasetGraph dsg = TDBFactory.createDatasetGraph(location) ;
+            if ( params != null )
+                System.err.println("StoreParams != null : ignored at the moment") ;
+            DatasetGraph dsg = TDBFactory.createDatasetGraph(location) ; // , params) ;
             return TDBInternal.getBaseDatasetGraphTDB(dsg) ;
         }
     }
@@ -109,9 +119,9 @@ public class TDBMaker
     private static class BuilderStoreConnectionBase implements DatasetGraphMakerTDB
     {
         @Override
-        public DatasetGraphTDB createDatasetGraph(Location location)
+        public DatasetGraphTDB createDatasetGraph(Location location, StoreParams params)
         {
-            return StoreConnection.make(location).getBaseDataset() ;
+            return StoreConnection.make(location, params).getBaseDataset() ;
         }
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/tdb/CmdRewriteIndex.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/tdb/CmdRewriteIndex.java b/jena-tdb/src/main/java/tdb/CmdRewriteIndex.java
index a7341f0..a8353bf 100644
--- a/jena-tdb/src/main/java/tdb/CmdRewriteIndex.java
+++ b/jena-tdb/src/main/java/tdb/CmdRewriteIndex.java
@@ -49,8 +49,8 @@ public class CmdRewriteIndex
             System.exit(1) ;
         }
         
-        Location srcLoc = new Location(argv[0]) ;
-        Location dstLoc = new Location(argv[1]) ;
+        Location srcLoc = Location.create(argv[0]) ;
+        Location dstLoc = Location.create(argv[1]) ;
         String indexName = argv[2] ;
         
         if ( ! FileOps.exists(argv[1]) )

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/tdb/cmdline/ModLocation.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/tdb/cmdline/ModLocation.java b/jena-tdb/src/main/java/tdb/cmdline/ModLocation.java
index 8b5dc25..fba78bf 100644
--- a/jena-tdb/src/main/java/tdb/cmdline/ModLocation.java
+++ b/jena-tdb/src/main/java/tdb/cmdline/ModLocation.java
@@ -49,7 +49,7 @@ public class ModLocation implements ArgModuleGeneral
         if ( cmdLine.contains(locationDecl) )
         {
             String dir = cmdLine.getValue(locationDecl) ;
-            location = new Location(dir) ;
+            location = Location.create(dir) ;
         }
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/tdb/cmdline/ModTDBDataset.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/tdb/cmdline/ModTDBDataset.java b/jena-tdb/src/main/java/tdb/cmdline/ModTDBDataset.java
index ee87b42..0740e75 100644
--- a/jena-tdb/src/main/java/tdb/cmdline/ModTDBDataset.java
+++ b/jena-tdb/src/main/java/tdb/cmdline/ModTDBDataset.java
@@ -108,7 +108,7 @@ public class ModTDBDataset extends ModDataset
         List<String> x = locations() ;
         if ( x.size() == 0 )
             return null ;
-        return new Location(x.get(0)) ;
+        return Location.create(x.get(0)) ;
     }
     
     public List<String> locations()

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java b/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java
index 6e13787..fcd2666 100644
--- a/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java
+++ b/jena-tdb/src/main/java/tdb/tools/dumpnodetable.java
@@ -89,7 +89,7 @@ public class dumpnodetable extends CmdGeneral
 
                             int sizeNodeMissCacheSize)
     {
-        NodeTable nodeTable = Build.makeNodeTable(new Location(location), 
+        NodeTable nodeTable = Build.makeNodeTable(Location.create(location), 
                                                     indexNode2Id, node2NodeIdCacheSize,
                                                     indexId2Node, nodeId2NodeCacheSize,
                                                     sizeNodeMissCacheSize) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/main/java/tdb/tools/tdbgenindex.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/tdb/tools/tdbgenindex.java b/jena-tdb/src/main/java/tdb/tools/tdbgenindex.java
index 9faf239..723a964 100644
--- a/jena-tdb/src/main/java/tdb/tools/tdbgenindex.java
+++ b/jena-tdb/src/main/java/tdb/tools/tdbgenindex.java
@@ -42,10 +42,10 @@ public class tdbgenindex
             System.exit(1) ;
         }
         
-        Location srcLoc = new Location(argv[0]) ;
+        Location srcLoc = Location.create(argv[0]) ;
         String srcIndexName = argv[1] ;
         
-        Location dstLoc = new Location(argv[2]) ;
+        Location dstLoc = Location.create(argv[2]) ;
         String dstIndexName = argv[3] ;
         
         int readCacheSize = 0 ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/file/TestLocationLock.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/file/TestLocationLock.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/file/TestLocationLock.java
index 90a6cfb..1ad2a6f 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/file/TestLocationLock.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/file/TestLocationLock.java
@@ -60,7 +60,7 @@ public class TestLocationLock {
 
     @Test
     public void location_lock_dir_01() {
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());
@@ -82,7 +82,7 @@ public class TestLocationLock {
     public void location_lock_dir_02() throws IOException {
         Assume.assumeTrue(negativePidsTreatedAsAlive);
 
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());
@@ -100,7 +100,7 @@ public class TestLocationLock {
 
     @Test
     public void location_lock_dir_03() {
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());
@@ -124,7 +124,7 @@ public class TestLocationLock {
     public void location_lock_dir_error_01() throws IOException {
         Assume.assumeTrue(negativePidsTreatedAsAlive);
 
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());
@@ -148,7 +148,7 @@ public class TestLocationLock {
     public void location_lock_dir_error_02() throws IOException {
         Assume.assumeTrue(negativePidsTreatedAsAlive);
 
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());
@@ -173,7 +173,7 @@ public class TestLocationLock {
     public void location_lock_dir_error_03() throws IOException {
         Assume.assumeTrue(negativePidsTreatedAsAlive);
         
-        Location dir = new Location(tempDir.getRoot().getAbsolutePath());
+        Location dir = Location.create(tempDir.getRoot().getAbsolutePath());
         LocationLock lock = dir.getLock();
         Assert.assertTrue(lock.canLock());
         Assert.assertFalse(lock.isLocked());

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileDisk.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileDisk.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileDisk.java
index 9a984d1..cf9c1f7 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileDisk.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestStringFileDisk.java
@@ -35,7 +35,7 @@ public class TestStringFileDisk extends AbstractTestStringFile
     {
         String dir = ConfigTest.getTestingDir() ;
       clearDirectory(dir) ;
-      Location loc = new Location(dir) ;
+      Location loc = Location.create(dir) ;
       fn = loc.getPath("xyz", "node") ;
       FileOps.delete(fn) ;
       return FileFactory.createStringFileDisk(fn) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_QuadsObjectIsNull.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_QuadsObjectIsNull.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_QuadsObjectIsNull.java
index d6d90d0..333caf1 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_QuadsObjectIsNull.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_QuadsObjectIsNull.java
@@ -41,7 +41,7 @@ public class T_QuadsObjectIsNull {
 //	}
 
 	static String DIR = "DBX" ;
-	static Location location = new Location(DIR) ;
+	static Location location = Location.create(DIR) ;
 
 	public static void main(String[] args) {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java
index c50127b..7a12e20 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TDBWriteTransaction.java
@@ -85,7 +85,7 @@ public class T_TDBWriteTransaction {
     {
         if ( false )
         {
-            Journal journal = Journal.create(new Location(location)) ;
+            Journal journal = Journal.create(Location.create(location)) ;
             JournalControl.print(journal) ;
             journal.close() ;
         }

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystem.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystem.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystem.java
index c7aefe0..1b459db 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystem.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystem.java
@@ -70,7 +70,7 @@ public class T_TransSystem
     static boolean MEM                  = true ;
     static String location              = true ? "/mnt/ssd1/tmp/DB163" : ConfigTest.getTestingDirDB() ;     // Using an SSD here is very helpful
     //static String location              = ConfigTest.getTestingDirDB() ;     // Using an SSD here is very helpful
-    static final Location LOC           = MEM ? Location.mem() : new Location(location) ;
+    static final Location LOC           = MEM ? Location.mem() : Location.create(location) ;
     
     static { 
         //SystemTDB.isWindows
@@ -416,7 +416,7 @@ public class T_TransSystem
         {
             FileOps.clearDirectory(LOC.getDirectoryPath()) ;
             // Clean because it's new.
-            //LOC = new Location(ConfigTest.getTestingDirUnique()) ;
+            //LOC = Location.create(ConfigTest.getTestingDirUnique()) ;
         }
     }
 
@@ -669,7 +669,7 @@ public class T_TransSystem
 
     private static int initCount = -1 ;
 
-    //static final Location LOC = new Location(ConfigTest.getTestingDirDB()) ;
+    //static final Location LOC = Location.create(ConfigTest.getTestingDirDB()) ;
     static final AtomicInteger gen = new AtomicInteger() ;
     
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystemMultiDatasets.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystemMultiDatasets.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystemMultiDatasets.java
index 90da56c..1acfc68 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystemMultiDatasets.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/extra/T_TransSystemMultiDatasets.java
@@ -77,7 +77,7 @@ public class T_TransSystemMultiDatasets
 
     private static int count_datasets = 0 ;
     static Location createLocation() {
-    	return MEM ? Location.mem() : new Location(ConfigTest.getTestingDirDB() + File.separator + "DB-" + ++count_datasets) ;
+    	return MEM ? Location.mem() : Location.create(ConfigTest.getTestingDirDB() + File.separator + "DB-" + ++count_datasets) ;
     }
 
     static final int Iterations             = MEM ? 1000 : 100 ;
@@ -548,7 +548,7 @@ public class T_TransSystemMultiDatasets
 
     private static int initCount = -1 ;
 
-    //static final Location LOC = new Location(ConfigTest.getTestingDirDB()) ;
+    //static final Location LOC = Location.create(ConfigTest.getTestingDirDB()) ;
     static final AtomicInteger gen = new AtomicInteger() ;
     
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/TestPrefixMappingTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/TestPrefixMappingTDB.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/TestPrefixMappingTDB.java
index 0665f83..49302e2 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/TestPrefixMappingTDB.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/graph/TestPrefixMappingTDB.java
@@ -91,7 +91,7 @@ public class TestPrefixMappingTDB extends AbstractTestPrefixMapping2
         String dir = ConfigTest.getTestingDir() ;
         FileOps.clearDirectory(dir) ;
 
-        DatasetPrefixesTDB prefixes = createTesting(new Location(dir), new DatasetControlMRSW()) ;
+        DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ;
         PrefixMapping pmap1 = prefixes.getPrefixMapping() ;
 
         String x = pmap1.getNsPrefixURI("x") ;
@@ -105,13 +105,13 @@ public class TestPrefixMappingTDB extends AbstractTestPrefixMapping2
         String dir = ConfigTest.getTestingDir() ;
         FileOps.clearDirectory(dir) ;
 
-        DatasetPrefixesTDB prefixes = createTesting(new Location(dir), new DatasetControlMRSW()) ;
+        DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ;
         PrefixMapping pmap1 = prefixes.getPrefixMapping() ;
 
         pmap1.setNsPrefix("x", "http://foo/") ;
         prefixes.close() ;
 
-        prefixes = createTesting(new Location(dir), new DatasetControlMRSW()) ;
+        prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ;
         assertEquals("http://foo/", pmap1.getNsPrefixURI("x")) ;
         prefixes.close() ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
index 54a2e20..ef2a3e8 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestDatasetTDBPersist.java
@@ -56,7 +56,7 @@ public class TestDatasetTDBPersist extends BaseTest
     {   
     	String dirname = ConfigTest.getCleanDir() ;
     	StoreConnection.reset() ;
-		graphLocation = new GraphLocation(new Location(dirname)) ;
+		graphLocation = new GraphLocation(Location.create(dirname)) ;
         graphLocation.createDataset() ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java
index 8576d7f..5acba6f 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestGraphTDB.java
@@ -39,7 +39,7 @@ public class TestGraphTDB extends AbstractTestGraph2
     @BeforeClass public static void beforeClass()
     {
         StoreConnection.reset() ;
-        graphLocation = new GraphLocation(new Location(ConfigTest.getCleanDir())) ;
+        graphLocation = new GraphLocation(Location.create(ConfigTest.getCleanDir())) ;
         graphLocation.release() ;
         graphLocation.clearDirectory() ;
         graphLocation.createGraph() ;

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransDisk.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransDisk.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransDisk.java
index 6d450bd..5eadac8 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransDisk.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestNodeTableTransDisk.java
@@ -34,7 +34,7 @@ public class TestNodeTableTransDisk extends AbstractTestNodeTableTrans
     @Before public void before()
     {
     	String dir = ConfigTest.getCleanDir() ;
-    	loc = new Location(dir) ;
+    	loc = Location.create(dir) ;
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestObjectFileTransStorage.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestObjectFileTransStorage.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestObjectFileTransStorage.java
index caaedbd..fee0eaf 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestObjectFileTransStorage.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestObjectFileTransStorage.java
@@ -29,7 +29,7 @@ public class TestObjectFileTransStorage extends AbstractTestObjectFileTrans
     ObjectFile createFile(String basename)
     {
 //        String dir = ConfigTest.getTestingDir() ;
-//        Location loc = new Location(dir) ;
+//        Location loc = Location.create(dir) ;
 //        String fn = loc.getPath(basename) ;
 //        FileOps.deleteSilent(fn) ;
 //        BufferChannel chan = new BufferChannelFile(fn) ;
@@ -46,7 +46,7 @@ public class TestObjectFileTransStorage extends AbstractTestObjectFileTrans
     void deleteFile(String basename)
     {
 //        String dir = ConfigTest.getTestingDir() ;
-//        Location loc = new Location(dir) ;
+//        Location loc = Location.create(dir) ;
 //        String fn = loc.getPath(basename) ;
 //        FileOps.delete(fn) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
index 0bab155..0b0ed5b 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
@@ -59,7 +59,7 @@ public class TestTransRestart extends BaseTest {
     
     @Before public void setup() {
         path = ConfigTest.getCleanDir() ; 
-        location = new Location (path) ;
+        location = Location.create (path) ;
         if ( useTransactionsSetup )
             setupTxn() ;
         else

http://git-wip-us.apache.org/repos/asf/jena/blob/140a0889/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
index 6966dca..5c1193c 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransactionTDB.java
@@ -45,7 +45,7 @@ public class TestTransactionTDB extends AbstractTestTransaction
     @Before public void before()
     {
         DIR = ConfigTest.getCleanDir() ;
-        StoreConnection.release(new Location(DIR)) ;
+        StoreConnection.release(Location.create(DIR)) ;
     }
     
     @After public void after()


[04/13] jena git commit: Fix mistaken recursion.

Posted by an...@apache.org.
Fix mistaken recursion.

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

Branch: refs/heads/master
Commit: aae3f2389716d8cace12a9672b022879f42fd585
Parents: 463de5f
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Nov 5 13:48:12 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Nov 5 15:06:44 2014 +0000

----------------------------------------------------------------------
 jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/aae3f238/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
index 0d18d51..26152b7 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
@@ -60,7 +60,7 @@ public class Location {
 
     /** Return a location for a directory on disk */
     static public Location create(String directoryName) {
-        Location loc = Location.create(directoryName) ;
+        Location loc = new Location(directoryName) ;
         return loc ;
     }
 


[05/13] jena git commit: Put in default StoreParams calls

Posted by an...@apache.org.
Put in default StoreParams calls


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

Branch: refs/heads/master
Commit: 906be05b1f491c96eadba008c494b8faa72cdf81
Parents: 74b75f3
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Nov 5 16:36:12 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Nov 5 16:36:12 2014 +0000

----------------------------------------------------------------------
 .../com/hp/hpl/jena/tdb/StoreConnection.java    |  4 +-
 .../hpl/jena/tdb/setup/DatasetBuilderStd.java   | 37 +++++++++++++-----
 .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 41 +++++++++++++++++---
 .../hp/hpl/jena/tdb/setup/StoreParamsConst.java | 27 +++++++++++++
 .../store/bulkloader2/CmdNodeTableBuilder.java  |  2 +-
 .../com/hp/hpl/jena/tdb/store/TestLoader.java   |  2 +-
 6 files changed, 94 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
index 91b333e..5935a9a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
@@ -230,12 +230,12 @@ public class StoreConnection
         return sConn ;
     }
 
-    @Deprecated
+    /** Make a StoreConnection based on any StoreParams at eh location or the system defaults. */
     public static StoreConnection make(Location location) {
         return make(location, null) ;
     }
 
-                                                    /**
+    /**
      * Return the StoreConnection if one already exists for this location, else
      * return null
      */

http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
index 38173b5..3dd02e6 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
@@ -67,28 +67,47 @@ public class DatasetBuilderStd implements DatasetBuilder {
     private TupleIndexBuilder   tupleIndexBuilder ;
     private Recorder            recorder = null ;   
     
-    @Deprecated
+    /**
+     * 
+     * @param location
+     * @return DatasetGraphTDB
+     */
     public static DatasetGraphTDB create(Location location) {
         return create(location, null) ;
     }
     
-    public static DatasetGraphTDB create(Location location, StoreParams $params) {
-        StoreParams params = paramsForLocation(location) ;
+    /**
+     * Create a {@linkplain DatasetGraphTDB} with a set of {@linkplain StoreParams}.
+     * The parameters for a store have 3 inputs: the parameters provided,
+     * any parameters 
+     * 
+     * 
+     * 
+     * @param location   Where to create the database.
+     * @param params     Store parameters to use (null means use default). 
+     * @return DatasetGraphTDB
+     */
+    public static DatasetGraphTDB create(Location location, StoreParams params) {
+        StoreParams $params = paramsForLocation(location) ;
         // ---- Experimental
-        if ( ! location.isMem() && $params != null ) {
+        if ( ! location.isMem() && params != null ) {
             if ( FileOps.existsAnyFiles(location.getDirectoryPath()) )
-                params = StoreParamsBuilder.modify(params, $params) ;
+                $params = StoreParamsBuilder.modify($params, params) ;
             else
-                params = $params ;
-            $params = null ;
+                $params = params ;
+            params = null ;
         }
 
         // ----
-        if ( $params != null )
+        if ( params != null )
             log.warn("StoreParams != null (experimental)") ;
         DatasetBuilderStd x = new DatasetBuilderStd() ;
         x.standardSetup() ;
-        return x.build(location, params) ;
+        DatasetGraphTDB dsg = x.build(location, $params) ;
+        // Write params.
+        //if ( params != StoreParams.getDftStoreParams() )
+        
+        return dsg ;
     }
 
     public static DatasetGraphTDB create(StoreParams params) {

http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
index 8790c9b..ee71b01 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
@@ -25,12 +25,25 @@ import org.apache.jena.atlas.lib.StrUtils ;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
 import com.hp.hpl.jena.tdb.index.IndexParams ;
 
-/** System parameters for a TDB database instance. */
+/** System parameters for a TDB database instance. 
+ * <p>
+ * Some parameters can be changed from run to run
+ * and some parameters can only be changed at the point the database is
+ * created.  
+ * <p>
+ * Getting paramters settings wrong can destroy a databse.   
+ * Alternating the block size is not encouraged and should only be
+ * done if necessary.  It can silently destroy a database if set
+ * to a different value than thatused to create the database.  The
+ * default value of 8Kbytes is good for almo
+ * 
+ * 
+ * 
+ * @see StoreParamsBuilder  for constructing StoreParams
+ * @see StoreParamsConst    for default values. 
+ */
 public class StoreParams implements IndexParams, StoreParamsDynamic
 {
-    // SystemParams are built with a SystemParamsBuilder
-    
-    private static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
     
     /* These are items you can change JVM to JVM */
     
@@ -89,9 +102,25 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
         this.prefixNode2Id          = prefixNode2Id ;
         this.prefixId2Node          = prefixId2Node ;
     }
-
+    
+    /** The system default settings. This is the normal set to use.
+     *  It is the set of values used when no StoreParams is provided,
+     *  which is the normal usage.
+     */
     public static StoreParams getDftStoreParams() {
-        return dftStoreParams ;
+        return StoreParamsConst.dftStoreParams ;
+    }
+    
+    /** A {@code StoreParams} that provides a smaller
+     * in-JVM foot print.  This is compatible with
+     * any database but it it is wise to use this consistently,
+     * that is, use when created and when opened later.
+     * It reduces cache sizes and runs the database in "direct"
+     * file mode so as not to use memory mapped files
+     * in addition to the JVM space.
+     */
+    public static StoreParams getSmallStoreParams() {
+        return StoreParamsConst.smallStoreParams ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
index 7f10450..70e6b6a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
@@ -23,6 +23,33 @@ import com.hp.hpl.jena.tdb.sys.Names ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 
 public class StoreParamsConst {
+    
+    // SystemParams are built with a SystemParamsBuilder
+    
+    /** The system default parameters for on-disk databases. */
+    static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
+
+    /** The system default parameters for in-memory databases. */
+    static StoreParams dftMemStoreParams = StoreParamsBuilder.create()
+        .fileMode(FileMode.direct)
+        // Small block caches, mainly so it behaves like a direct on-disk database.  
+        .blockReadCacheSize(10)
+        .blockWriteCacheSize(10)
+        .node2NodeIdCacheSize(10000)
+        .nodeId2NodeCacheSize(10000)
+        .nodeMissCacheSize(100)
+        .build() ;
+    
+    /** The "small store" parameters. */
+    static StoreParams smallStoreParams = StoreParamsBuilder.create()
+        .fileMode(FileMode.direct)
+        .blockReadCacheSize(100)
+        .blockWriteCacheSize(100)
+        .node2NodeIdCacheSize(10000)
+        .nodeId2NodeCacheSize(10000)
+        .nodeMissCacheSize(100)
+        .build() ;
+
     // Initial values are the system defaults.
     
     /** Database and query configuration */ 

http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
index 1782de6..f6eabc5 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/bulkloader2/CmdNodeTableBuilder.java
@@ -142,7 +142,7 @@ public class CmdNodeTableBuilder extends CmdGeneral
         // Later - attach prefix table to parser.
         dsg.getPrefixes().close() ;
         
-        ProgressLogger monitor = new ProgressLogger(cmdLog, "Data", BulkLoader.DataTickPoint,BulkLoader.superTick) ;
+        ProgressLogger monitor = new ProgressLogger(cmdLog, "Data", BulkLoader.DataTickPoint, BulkLoader.superTick) ;
         OutputStream outputTriples = null ;
         OutputStream outputQuads = null ;
         

http://git-wip-us.apache.org/repos/asf/jena/blob/906be05b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java
index 60ed84f..4284dde 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestLoader.java
@@ -61,7 +61,7 @@ public class TestLoader extends BaseTest {
     }
 
     static DatasetGraphTDB fresh() {
-        return TDBMaker.createDatasetGraphTDB(Location.mem()) ;
+        return TDBMaker.createDatasetGraphTDB(Location.mem(), null) ;
     }
 
     @Test


[07/13] jena git commit: Make constructor public, but deprecated, for compatibility.

Posted by an...@apache.org.
Make constructor public, but deprecated, for compatibility.

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

Branch: refs/heads/master
Commit: 8f3a7ceb042da05dea403443ce07225c4058b703
Parents: 879742c
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 7 12:24:28 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 7 12:24:28 2014 +0000

----------------------------------------------------------------------
 jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/8f3a7ceb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
index 26152b7..e8d010a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
@@ -80,6 +80,8 @@ public class Location {
         location.lock = new LocationLock(location);
     }
 
+    /** @deprecated Use{@linkplain  Location#create(String)} */
+    @Deprecated
     public Location(String rootname) {
         super() ;
         if ( rootname.equals(Names.memName) ) {


[08/13] jena git commit: Building, getting, persisting, choosing StoreParams.

Posted by an...@apache.org.
Building, getting, persisting, choosing StoreParams.

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

Branch: refs/heads/master
Commit: 25d16cbb8f315152a1a79952cbf819fdc2f5123f
Parents: 8f3a7ce
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 7 20:44:07 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 7 20:44:07 2014 +0000

----------------------------------------------------------------------
 .../hp/hpl/jena/tdb/base/block/BlockParams.java |   6 +-
 .../com/hp/hpl/jena/tdb/base/file/Location.java |   2 +-
 .../com/hp/hpl/jena/tdb/index/IndexParams.java  |   6 +-
 .../java/com/hp/hpl/jena/tdb/setup/Build.java   |  68 ++++
 .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 322 +++++++++++++------
 .../hpl/jena/tdb/setup/StoreParamsBuilder.java  | 242 ++++++++------
 .../hp/hpl/jena/tdb/setup/StoreParamsCodec.java |  57 +++-
 .../hp/hpl/jena/tdb/setup/StoreParamsConst.java |  54 ++--
 .../hpl/jena/tdb/setup/StoreParamsDynamic.java  |  21 +-
 .../com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java  |   2 +
 .../hp/hpl/jena/tdb/setup/TestStoreParams.java  |  64 ++--
 .../jena/tdb/setup/TestStoreParamsChoose.java   | 155 +++++++++
 .../jena/tdb/setup/TestStoreParamsCreate.java   |  83 +++++
 13 files changed, 812 insertions(+), 270 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockParams.java
index ef0d511..e3113e5 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/block/BlockParams.java
@@ -20,8 +20,8 @@ package com.hp.hpl.jena.tdb.base.block;
 
 public interface BlockParams {
     public FileMode getFileMode() ;
-    public int getBlockSize() ;
-    public int getBlockReadCacheSize() ;
-    public int getBlockWriteCacheSize() ;
+    public Integer getBlockSize() ;
+    public Integer getBlockReadCacheSize() ;
+    public Integer getBlockWriteCacheSize() ;
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
index e8d010a..641ab3b 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/base/file/Location.java
@@ -53,7 +53,7 @@ public class Location {
 
     /** Return a memory location with a name */
     static public Location mem(String name) {
-        Location loc = Location.mem() ;
+        Location loc = new Location() ;
         memInit(loc, name) ;
         return loc ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/index/IndexParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/index/IndexParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/index/IndexParams.java
index cdfbe9f..2358d99 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/index/IndexParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/index/IndexParams.java
@@ -28,11 +28,11 @@ public interface IndexParams extends BlockParams {
     /** Block size - this is only configurable when the on-disk are created.
      * After that, the same value as at creation must be used each time.
      */
-    @Override public int getBlockSize() ;
+    @Override public Integer getBlockSize() ;
     
     /** Block read cache size (mmap'ed files do not have a block cache)*/
-    @Override public int getBlockReadCacheSize() ;
+    @Override public Integer getBlockReadCacheSize() ;
     
     /** Block write cache size (mmap'ed files do not have a block cache)*/
-    @Override public int getBlockWriteCacheSize() ;
+    @Override public Integer getBlockWriteCacheSize() ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
index ddb98d2..558846a 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
@@ -22,6 +22,7 @@ import org.apache.jena.atlas.lib.ColumnMap ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
 
+import com.hp.hpl.jena.tdb.TDBFactory ;
 import com.hp.hpl.jena.tdb.base.file.FileSet ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.base.record.RecordFactory ;
@@ -83,4 +84,71 @@ public class Build
         DatasetBuilderStd dbBuild = DatasetBuilderStd.stdBuilder() ;
         return makeNodeTable(location, spb.build()) ; 
     }
+    
+    /** Choose the StoreParams.  This is the policy applied when creating or reattaching to a database.
+     *  (extracted and put here to keep the size of DatasetBuildStd  
+     * <p>
+     * If the location has parameters in a <tt>tdb.cfg</tt> file, use them, as modified by any
+     * application-supplied internal parameters.
+     * <p>
+     * Otherwise, if this is a new database, use the application provided
+     * parameters or if there are no application provided 
+     * parameters, use the system default parameters.
+     * Write the parameters used to the location in <tt>tdb.cfg</tt>
+     * <p>If this is an existing database and there are no location recorded parameters,
+     * use system default parameters, modified by application parameters.   
+     * <p>
+     * Notes:
+     * <ul>
+     * <li><i>Modification</i> involves setting any of the parameters than can vary from run to run. 
+     * These are the cache sizes and the file mode. 
+     * <li><i>Block size</i>: it is critical that this set correctly. Silent corruption
+     * of a database may occur if this is changed.  At the moment, it is not possible to provide
+     * a complete check of block size.
+     * <ul>  
+     * <p>
+     * Do not edit store parameters recorded at a location after the database has been created.
+     * Only the dynamic parameters cna be safely changed. That is better done though the application
+     * providing some parameters in the {@linkplain TDBFactory} call.
+     * <p>
+     * This includes changing filenames,  indexing choices and block size. 
+     * Otherwise, the database may be permanetly and irrecovably corrupted.
+     * You have been warned. 
+     * 
+     * @param location The place where the database is or will be.
+     * @param isNew  Whether the database is being created or whether there is an existing database.
+     * @param pApp   Application-provide store parameters.
+     * @param pLoc   Store parameters foud at the location.
+     * @param pDft   System default store parameters.
+     * @return       StoreParams
+     * 
+     * @see StoreParams
+     * @see StoreParamsDynamic
+     */
+    static StoreParams fixStoreParams(Location location, boolean isNew, StoreParams pApp, StoreParams pLoc, StoreParams pDft) {
+        StoreParams p = null ;
+        if ( pLoc != null ) {
+            // pLoc so use it, modify by pApp.
+            // Covers new and reconnect cases.
+            p = pLoc ;
+            if ( pApp != null )
+                p = StoreParamsBuilder.modify(pLoc, pApp) ;
+            return p ;
+        }
+        // No pLoc.
+        // Use pApp if available.  Write to location if new.
+        if ( pApp != null ) {
+            if ( isNew ) {
+                if ( ! location.isMem() ) {
+                    String filename = location.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
+                    StoreParamsCodec.write(filename, pApp) ;
+                }
+                return pApp ;
+            }
+            // Not new : pLoc is implicitly pDft.
+            return StoreParamsBuilder.modify(pDft, pApp) ;
+        }
+        // no pLoc, no pApp
+        return pDft ;
+    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
index ee71b01..81873dc 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
@@ -18,12 +18,13 @@
 
 package com.hp.hpl.jena.tdb.setup;
 
-import java.util.Arrays ;
+import java.util.Objects ;
 
 import org.apache.jena.atlas.lib.StrUtils ;
 
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
 import com.hp.hpl.jena.tdb.index.IndexParams ;
+import com.hp.hpl.jena.tdb.setup.StoreParamsBuilder.Item ;
 
 /** System parameters for a TDB database instance. 
  * <p>
@@ -35,9 +36,7 @@ import com.hp.hpl.jena.tdb.index.IndexParams ;
  * Alternating the block size is not encouraged and should only be
  * done if necessary.  It can silently destroy a database if set
  * to a different value than thatused to create the database.  The
- * default value of 8Kbytes is good for almo
- * 
- * 
+ * default value of 8Kbytes is good for almost use.
  * 
  * @see StoreParamsBuilder  for constructing StoreParams
  * @see StoreParamsConst    for default values. 
@@ -47,12 +46,12 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
     
     /* These are items you can change JVM to JVM */
     
-    private final FileMode fileMode ;
-    private final int      blockReadCacheSize ;
-    private final int      blockWriteCacheSize ;
-    private final int      Node2NodeIdCacheSize ;
-    private final int      NodeId2NodeCacheSize ;
-    private final int      NodeMissCacheSize ;
+    /*package*/ final Item<FileMode>           fileMode ;
+    /*package*/ final Item<Integer>            blockReadCacheSize ;
+    /*package*/ final Item<Integer>            blockWriteCacheSize ;
+    /*package*/ final Item<Integer>            Node2NodeIdCacheSize ;
+    /*package*/ final Item<Integer>            NodeId2NodeCacheSize ;
+    /*package*/ final Item<Integer>            NodeMissCacheSize ;
 
     /* These are items affect database layout and
      * only can be applied when a database is created.
@@ -60,27 +59,30 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
      * If you want to, say, change the index structure,
      * you'll need to use the index tools.  
      */
-    private final int      blockSize ;
-    private final String   indexNode2Id ;
-    private final String   indexId2Node ;
-    private final String   primaryIndexTriples ;
-    private final String[] tripleIndexes ;
-    private final String   primaryIndexQuads ;
-    private final String[] quadIndexes ;
-    private final String   primaryIndexPrefix ;
-    private final String[] prefixIndexes ;
-    private final String   indexPrefix ;
-
-    private final String   prefixNode2Id ;
-    private final String   prefixId2Node ;
     
-    public StoreParams(FileMode fileMode, int blockSize, int blockReadCacheSize, int blockWriteCacheSize,
-                       int node2NodeIdCacheSize, int nodeId2NodeCacheSize, int nodeMissCacheSize,
-                       String indexNode2Id, String indexId2Node, 
-                       String primaryIndexTriples, String[] tripleIndexes,
-                       String primaryIndexQuads, String[] quadIndexes,
-                       String primaryIndexPrefix, String[] prefixIndexes, String indexPrefix, 
-                       String prefixNode2Id, String prefixId2Node) {
+    /*package*/ final Item<Integer>            blockSize ;
+    /*package*/ final Item<String>             indexNode2Id ;
+    /*package*/ final Item<String>             indexId2Node ;
+    /*package*/ final Item<String>             primaryIndexTriples ;
+    /*package*/ final Item<String[]>           tripleIndexes ;
+    /*package*/ final Item<String>             primaryIndexQuads ;
+    /*package*/ final Item<String[]>           quadIndexes ;
+    /*package*/ final Item<String>             primaryIndexPrefix ;
+    /*package*/ final Item<String[]>           prefixIndexes ;
+    /*package*/ final Item<String>             indexPrefix ;
+    /*package*/ final Item<String>             prefixNode2Id ;
+    /*package*/ final Item<String>             prefixId2Node ;
+
+    
+    /*package*/ StoreParams(Item<FileMode> fileMode, Item<Integer> blockSize,
+                            Item<Integer> blockReadCacheSize, Item<Integer> blockWriteCacheSize,
+                            Item<Integer> node2NodeIdCacheSize, Item<Integer> nodeId2NodeCacheSize,
+                            Item<Integer> nodeMissCacheSize,
+                            Item<String> indexNode2Id, Item<String> indexId2Node, 
+                            Item<String> primaryIndexTriples, Item<String[]> tripleIndexes,
+                            Item<String> primaryIndexQuads, Item<String[]> quadIndexes,
+                            Item<String> primaryIndexPrefix, Item<String[]> prefixIndexes,
+                            Item<String> indexPrefix, Item<String> prefixNode2Id, Item<String> prefixId2Node) {
         this.fileMode               = fileMode ;
         this.blockSize              = blockSize ;
         this.blockReadCacheSize     = blockReadCacheSize ;
@@ -125,146 +127,236 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
 
     @Override
     public FileMode getFileMode() {
-        return fileMode ;
+        return fileMode.value ;
     }
-    
+
+    @Override
+    public boolean isSetFileMode() {
+        return fileMode.isSet ;
+    }
+
+    @Override
+    public Integer getBlockSize() {
+        return blockSize.value ;
+    }
+
+    @Override
+    public Integer getBlockReadCacheSize() {
+        return blockReadCacheSize.value ;
+    }
+
     @Override
-    public int getBlockSize() {
-        return blockSize ;
+    public boolean isSetBlockReadCacheSize() {
+        return blockReadCacheSize.isSet ;
     }
 
     @Override
-    public int getBlockReadCacheSize() {
-        return blockReadCacheSize ;
+    public Integer getBlockWriteCacheSize() {
+        return blockWriteCacheSize.value ;
     }
 
     @Override
-    public int getBlockWriteCacheSize() {
-        return blockWriteCacheSize ;
+    public boolean isSetBlockWriteCacheSize() {
+        return blockWriteCacheSize.isSet ;
     }
 
     @Override
-    public int getNode2NodeIdCacheSize() {
-        return Node2NodeIdCacheSize ;
+    public Integer getNode2NodeIdCacheSize() {
+        return Node2NodeIdCacheSize.value ;
     }
 
     @Override
-    public int getNodeId2NodeCacheSize() {
-        return NodeId2NodeCacheSize ;
+    public boolean isSetNodeId2NodeCacheSize() {
+        return NodeId2NodeCacheSize.isSet ;
     }
 
     @Override
-    public int getNodeMissCacheSize() {
-        return NodeMissCacheSize ;
+    public boolean isSetNode2NodeIdCacheSize() {
+        return Node2NodeIdCacheSize.isSet ;
+    }
+
+    @Override
+    public Integer getNodeId2NodeCacheSize() {
+        return NodeId2NodeCacheSize.value ;
+    }
+
+    @Override
+    public Integer getNodeMissCacheSize() {
+        return NodeMissCacheSize.value ;
+    }
+
+    @Override
+    public boolean isSetNodeMissCacheSize() {
+        return NodeMissCacheSize.isSet ;
     }
 
     public String getIndexNode2Id() {
-        return indexNode2Id ;
+        return indexNode2Id.value ;
     }
 
     public String getIndexId2Node() {
-        return indexId2Node ;
+        return indexId2Node.value ;
     }
 
     public String getPrimaryIndexTriples() {
-        return primaryIndexTriples ;
+        return primaryIndexTriples.value ;
     }
 
     public String[] getTripleIndexes() {
-        return tripleIndexes ;
+        return tripleIndexes.value ;
     }
 
     public String getPrimaryIndexQuads() {
-        return primaryIndexQuads ;
+        return primaryIndexQuads.value ;
     }
 
     public String[] getQuadIndexes() {
-        return quadIndexes ;
+        return quadIndexes.value ;
     }
 
     public String getPrimaryIndexPrefix() {
-        return primaryIndexPrefix ;
+        return primaryIndexPrefix.value ;
     }
 
     public String[] getPrefixIndexes() {
-        return prefixIndexes ;
+        return prefixIndexes.value ;
     }
 
     public String getIndexPrefix() {
-        return indexPrefix ;
+        return indexPrefix.value ;
     }
 
     public String getPrefixNode2Id() {
-        return prefixNode2Id ;
+        return prefixNode2Id.value ;
     }
 
     public String getPrefixId2Node() {
-        return prefixId2Node ;
+        return prefixId2Node.value ;
     }
 
     @Override
     public String toString() {
         StringBuilder buff = new StringBuilder() ;
-        fmt(buff, "fileMode", getFileMode().toString()) ;
-        fmt(buff, "blockSize", getBlockSize()) ;
-        fmt(buff, "readCacheSize", getBlockReadCacheSize()) ;
-        fmt(buff, "writeCacheSize", getBlockWriteCacheSize()) ;
-        fmt(buff, "Node2NodeIdCacheSize", getNode2NodeIdCacheSize()) ;
-        fmt(buff, "NodeId2NodeCacheSize", getNodeId2NodeCacheSize()) ;
-        fmt(buff, "NodeMissCacheSize", getNodeMissCacheSize()) ;
-
-        fmt(buff, "indexNode2Id", getIndexNode2Id()) ;
-        fmt(buff, "indexId2Node", getIndexId2Node()) ;
-        fmt(buff, "primaryIndexTriples", getPrimaryIndexTriples()) ;
-        fmt(buff, "tripleIndexes", getTripleIndexes()) ;
-        fmt(buff, "primaryIndexQuads", getPrimaryIndexQuads()) ;
-        fmt(buff, "quadIndexes", getQuadIndexes()) ;
-        fmt(buff, "primaryIndexPrefix", getPrimaryIndexPrefix()) ;
-        fmt(buff, "prefixIndexes", getPrefixIndexes()) ;
-        fmt(buff, "indexPrefix", getIndexPrefix()) ;
-
-        fmt(buff, "prefixNode2Id", getPrefixNode2Id()) ;
-        fmt(buff, "prefixId2Node", getPrefixId2Node()) ;
+        fmt(buff, "fileMode", getFileMode().toString(), fileMode.isSet) ;
+        fmt(buff, "blockSize", getBlockSize(), blockSize.isSet) ;
+        fmt(buff, "readCacheSize", getBlockReadCacheSize(), blockReadCacheSize.isSet) ;
+        fmt(buff, "writeCacheSize", getBlockWriteCacheSize(), blockWriteCacheSize.isSet) ;
+        fmt(buff, "Node2NodeIdCacheSize", getNode2NodeIdCacheSize(), Node2NodeIdCacheSize.isSet) ;
+        fmt(buff, "NodeId2NodeCacheSize", getNodeId2NodeCacheSize(), NodeId2NodeCacheSize.isSet) ;
+        fmt(buff, "NodeMissCacheSize", getNodeMissCacheSize(), NodeMissCacheSize.isSet) ;
+
+        fmt(buff, "indexNode2Id", getIndexNode2Id(), indexNode2Id.isSet) ;
+        fmt(buff, "indexId2Node", getIndexId2Node(), indexId2Node.isSet) ;
+        fmt(buff, "primaryIndexTriples", getPrimaryIndexTriples(), primaryIndexTriples.isSet) ;
+        fmt(buff, "tripleIndexes", getTripleIndexes(), tripleIndexes.isSet) ;
+        fmt(buff, "primaryIndexQuads", getPrimaryIndexQuads(), primaryIndexQuads.isSet) ;
+        fmt(buff, "quadIndexes", getQuadIndexes(), quadIndexes.isSet) ;
+        fmt(buff, "primaryIndexPrefix", getPrimaryIndexPrefix(), primaryIndexPrefix.isSet) ;
+        fmt(buff, "prefixIndexes", getPrefixIndexes(), prefixIndexes.isSet) ;
+        fmt(buff, "indexPrefix", getIndexPrefix(), indexPrefix.isSet) ;
+
+        fmt(buff, "prefixNode2Id", getPrefixNode2Id(), prefixNode2Id.isSet) ;
+        fmt(buff, "prefixId2Node", getPrefixId2Node(), prefixId2Node.isSet) ;
         
         return buff.toString() ;
     }
     
-    private void fmt(StringBuilder buff, String name, String[] strings) {
-        buff.append(String.format("%-20s   [%s]\n", name, StrUtils.strjoin(", ", strings))) ;
+    private void fmt(StringBuilder buff, String name, String[] strings, boolean isSet) {
+        String dftStr = "" ;
+        if ( ! isSet )
+            dftStr = "dft:" ;
+        buff.append(String.format("%-20s   %s[%s]\n", name, dftStr, StrUtils.strjoin(", ", strings))) ;
     }
 
-    private void fmt(StringBuilder buff, String name, String value) {
-        buff.append(String.format("%-20s   %s\n", name, value)) ;
+    private void fmt(StringBuilder buff, String name, String value, boolean isSet) {
+        String dftStr = "" ;
+        if ( ! isSet )
+            dftStr = "dft:" ;
+        buff.append(String.format("%-20s   %s%s\n", name, dftStr, value)) ;
     }
 
-    private void fmt(StringBuilder buff, String name, int value) {
-        buff.append(String.format("%-20s   %s\n", name, value)) ;
+    private void fmt(StringBuilder buff, String name, int value, boolean isSet) {
+        String dftStr = "" ;
+        if ( ! isSet )
+            dftStr = "dft:" ;
+        buff.append(String.format("%-20s   %s%s\n", name, dftStr, value)) ;
     }
 
     @Override
     public int hashCode() {
         final int prime = 31 ;
         int result = 1 ;
-        result = prime * result + Node2NodeIdCacheSize ;
-        result = prime * result + NodeId2NodeCacheSize ;
-        result = prime * result + NodeMissCacheSize ;
-        result = prime * result + blockReadCacheSize ;
-        result = prime * result + blockSize ;
-        result = prime * result + blockWriteCacheSize ;
+        result = prime * result + ((Node2NodeIdCacheSize == null) ? 0 : Node2NodeIdCacheSize.hashCode()) ;
+        result = prime * result + ((NodeId2NodeCacheSize == null) ? 0 : NodeId2NodeCacheSize.hashCode()) ;
+        result = prime * result + ((NodeMissCacheSize == null) ? 0 : NodeMissCacheSize.hashCode()) ;
+        result = prime * result + ((blockReadCacheSize == null) ? 0 : blockReadCacheSize.hashCode()) ;
+        result = prime * result + ((blockSize == null) ? 0 : blockSize.hashCode()) ;
+        result = prime * result + ((blockWriteCacheSize == null) ? 0 : blockWriteCacheSize.hashCode()) ;
         result = prime * result + ((fileMode == null) ? 0 : fileMode.hashCode()) ;
         result = prime * result + ((indexId2Node == null) ? 0 : indexId2Node.hashCode()) ;
         result = prime * result + ((indexNode2Id == null) ? 0 : indexNode2Id.hashCode()) ;
         result = prime * result + ((indexPrefix == null) ? 0 : indexPrefix.hashCode()) ;
         result = prime * result + ((prefixId2Node == null) ? 0 : prefixId2Node.hashCode()) ;
-        result = prime * result + Arrays.hashCode(prefixIndexes) ;
+        result = prime * result + ((prefixIndexes == null) ? 0 : prefixIndexes.hashCode()) ;
         result = prime * result + ((prefixNode2Id == null) ? 0 : prefixNode2Id.hashCode()) ;
         result = prime * result + ((primaryIndexPrefix == null) ? 0 : primaryIndexPrefix.hashCode()) ;
         result = prime * result + ((primaryIndexQuads == null) ? 0 : primaryIndexQuads.hashCode()) ;
         result = prime * result + ((primaryIndexTriples == null) ? 0 : primaryIndexTriples.hashCode()) ;
-        result = prime * result + Arrays.hashCode(quadIndexes) ;
-        result = prime * result + Arrays.hashCode(tripleIndexes) ;
+        result = prime * result + ((quadIndexes == null) ? 0 : quadIndexes.hashCode()) ;
+        result = prime * result + ((tripleIndexes == null) ? 0 : tripleIndexes.hashCode()) ;
         return result ;
     }
+    
+    /** Equality but ignore "isSet" */
+    public static boolean sameValues(StoreParams params1, StoreParams params2) {
+        if ( params1 == null && params2 == null )
+            return true ;
+        if ( params1 == null )
+            return false ;
+        if ( params2 == null )
+            return false ;
+        if ( !sameValues(params1.fileMode, params2.fileMode) )
+            return false ;
+        if ( !sameValues(params1.blockReadCacheSize, params2.blockReadCacheSize) )
+            return false ;
+        if ( !sameValues(params1.blockWriteCacheSize, params2.blockWriteCacheSize) )
+            return false ;
+        if ( !sameValues(params1.Node2NodeIdCacheSize, params2.Node2NodeIdCacheSize) )
+            return false ;
+        if ( !sameValues(params1.NodeId2NodeCacheSize, params2.NodeId2NodeCacheSize) )
+            return false ;
+        if ( !sameValues(params1.NodeMissCacheSize, params2.NodeMissCacheSize) )
+            return false ;
+        if ( !sameValues(params1.blockSize, params2.blockSize) )
+            return false ;
+        if ( !sameValues(params1.indexNode2Id, params2.indexNode2Id) )
+            return false ;
+        if ( !sameValues(params1.indexId2Node, params2.indexId2Node) )
+            return false ;
+        if ( !sameValues(params1.primaryIndexTriples, params2.primaryIndexTriples) )
+            return false ;
+        if ( !sameValues(params1.tripleIndexes, params2.tripleIndexes) )
+            return false ;
+        if ( !sameValues(params1.primaryIndexQuads, params2.primaryIndexQuads) )
+            return false ;
+        if ( !sameValues(params1.quadIndexes, params2.quadIndexes) )
+            return false ;
+        if ( !sameValues(params1.primaryIndexPrefix, params2.primaryIndexPrefix) )
+            return false ;
+        if ( !sameValues(params1.prefixIndexes, params2.prefixIndexes) )
+            return false ;
+        if ( !sameValues(params1.indexPrefix, params2.indexPrefix) )
+            return false ;
+        if ( !sameValues(params1.prefixNode2Id, params2.prefixNode2Id) )
+            return false ;
+        if ( !sameValues(params1.prefixId2Node, params2.prefixId2Node) )
+            return false ;
+        return true ;
+    }
+    
+    private static <X> boolean sameValues(Item<X> item1, Item<X> item2) {
+        return Objects.deepEquals(item1.value, item2.value) ; 
+    }
 
     @Override
     public boolean equals(Object obj) {
@@ -275,19 +367,40 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
         if ( getClass() != obj.getClass() )
             return false ;
         StoreParams other = (StoreParams)obj ;
-        if ( Node2NodeIdCacheSize != other.Node2NodeIdCacheSize )
+        if ( Node2NodeIdCacheSize == null ) {
+            if ( other.Node2NodeIdCacheSize != null )
+                return false ;
+        } else if ( !Node2NodeIdCacheSize.equals(other.Node2NodeIdCacheSize) )
             return false ;
-        if ( NodeId2NodeCacheSize != other.NodeId2NodeCacheSize )
+        if ( NodeId2NodeCacheSize == null ) {
+            if ( other.NodeId2NodeCacheSize != null )
+                return false ;
+        } else if ( !NodeId2NodeCacheSize.equals(other.NodeId2NodeCacheSize) )
             return false ;
-        if ( NodeMissCacheSize != other.NodeMissCacheSize )
+        if ( NodeMissCacheSize == null ) {
+            if ( other.NodeMissCacheSize != null )
+                return false ;
+        } else if ( !NodeMissCacheSize.equals(other.NodeMissCacheSize) )
             return false ;
-        if ( blockReadCacheSize != other.blockReadCacheSize )
+        if ( blockReadCacheSize == null ) {
+            if ( other.blockReadCacheSize != null )
+                return false ;
+        } else if ( !blockReadCacheSize.equals(other.blockReadCacheSize) )
             return false ;
-        if ( blockSize != other.blockSize )
+        if ( blockSize == null ) {
+            if ( other.blockSize != null )
+                return false ;
+        } else if ( !blockSize.equals(other.blockSize) )
             return false ;
-        if ( blockWriteCacheSize != other.blockWriteCacheSize )
+        if ( blockWriteCacheSize == null ) {
+            if ( other.blockWriteCacheSize != null )
+                return false ;
+        } else if ( !blockWriteCacheSize.equals(other.blockWriteCacheSize) )
             return false ;
-        if ( fileMode != other.fileMode )
+        if ( fileMode == null ) {
+            if ( other.fileMode != null )
+                return false ;
+        } else if ( !fileMode.equals(other.fileMode) )
             return false ;
         if ( indexId2Node == null ) {
             if ( other.indexId2Node != null )
@@ -309,7 +422,10 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
                 return false ;
         } else if ( !prefixId2Node.equals(other.prefixId2Node) )
             return false ;
-        if ( !Arrays.equals(prefixIndexes, other.prefixIndexes) )
+        if ( prefixIndexes == null ) {
+            if ( other.prefixIndexes != null )
+                return false ;
+        } else if ( !prefixIndexes.equals(other.prefixIndexes) )
             return false ;
         if ( prefixNode2Id == null ) {
             if ( other.prefixNode2Id != null )
@@ -331,9 +447,15 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
                 return false ;
         } else if ( !primaryIndexTriples.equals(other.primaryIndexTriples) )
             return false ;
-        if ( !Arrays.equals(quadIndexes, other.quadIndexes) )
+        if ( quadIndexes == null ) {
+            if ( other.quadIndexes != null )
+                return false ;
+        } else if ( !quadIndexes.equals(other.quadIndexes) )
             return false ;
-        if ( !Arrays.equals(tripleIndexes, other.tripleIndexes) )
+        if ( tripleIndexes == null ) {
+            if ( other.tripleIndexes != null )
+                return false ;
+        } else if ( !tripleIndexes.equals(other.tripleIndexes) )
             return false ;
         return true ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
index e0ceda7..352f7c5 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
@@ -21,48 +21,85 @@ package com.hp.hpl.jena.tdb.setup;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
 
 public class StoreParamsBuilder {
+    // Immuatable.
+    static class Item<X> {
+        final X value  ;
+        final boolean isSet ;
+        
+        Item(X value, boolean isSet) {
+            this.value = value ;
+            this.isSet = isSet ;
+        }
+        @Override
+        public int hashCode() {
+            final int prime = 31 ;
+            int result = 1 ;
+            result = prime * result + (isSet ? 1231 : 1237) ;
+            result = prime * result + ((value == null) ? 0 : value.hashCode()) ;
+            return result ;
+        }
+        @Override
+        public boolean equals(Object obj) {
+            if ( this == obj )
+                return true ;
+            if ( obj == null )
+                return false ;
+            if ( getClass() != obj.getClass() )
+                return false ;
+            Item<?> other = (Item<?>)obj ;
+            if ( isSet != other.isSet )
+                return false ;
+            if ( value == null ) {
+                if ( other.value != null )
+                    return false ;
+            } else if ( !value.equals(other.value) )
+                return false ;
+            return true ;
+        }
+    }
+    
     // See also StoreParamsConst.
     /** Database and query configuration */ 
     // Key names are the base name -  encode/decode may add a prefix.
     
-    private FileMode           fileMode              = StoreParamsConst.fileMode ;
+    private Item<FileMode>           fileMode              = new Item<>(StoreParamsConst.fileMode, false) ;
 
-    private int                blockReadCacheSize    = StoreParamsConst.blockReadCacheSize ;
+    private Item<Integer>            blockReadCacheSize    = new Item<>(StoreParamsConst.blockReadCacheSize, false) ;
 
-    private int                blockWriteCacheSize   = StoreParamsConst.blockWriteCacheSize ;
+    private Item<Integer>            blockWriteCacheSize   = new Item<>(StoreParamsConst.blockWriteCacheSize, false) ;
 
-    private int                Node2NodeIdCacheSize  = StoreParamsConst.Node2NodeIdCacheSize ;
+    private Item<Integer>            Node2NodeIdCacheSize  = new Item<>(StoreParamsConst.Node2NodeIdCacheSize, false) ;
 
-    private int                NodeId2NodeCacheSize  = StoreParamsConst.NodeId2NodeCacheSize ;
+    private Item<Integer>            NodeId2NodeCacheSize  = new Item<>(StoreParamsConst.NodeId2NodeCacheSize, false) ;
 
-    private int                NodeMissCacheSize     = StoreParamsConst.NodeMissCacheSize ;
+    private Item<Integer>            NodeMissCacheSize     = new Item<>(StoreParamsConst.NodeMissCacheSize, false) ;
 
     /** Database layout - ignored after a database is created */
 
-    private int                blockSize             = StoreParamsConst.blockSize ;
-
-    private String             indexNode2Id          = StoreParamsConst.indexNode2Id ;
+    private Item<Integer>            blockSize             = new Item<>(StoreParamsConst.blockSize, false) ;
 
-    private String             indexId2Node          = StoreParamsConst.indexId2Node ;
+    private Item<String>             indexNode2Id          = new Item<>(StoreParamsConst.indexNode2Id, false) ;
 
-    private String             primaryIndexTriples   = StoreParamsConst.primaryIndexTriples ;
+    private Item<String>             indexId2Node          = new Item<>(StoreParamsConst.indexId2Node, false) ;
 
-    private String[]           tripleIndexes         = StoreParamsConst.tripleIndexes ;
+    private Item<String>             primaryIndexTriples   = new Item<>(StoreParamsConst.primaryIndexTriples, false) ;
 
-    private String             primaryIndexQuads     = StoreParamsConst.primaryIndexQuads ;
+    private Item<String[]>           tripleIndexes         = new Item<>(StoreParamsConst.tripleIndexes, false) ;
 
-    private String[]           quadIndexes           = StoreParamsConst.quadIndexes ;
+    private Item<String>             primaryIndexQuads     = new Item<>(StoreParamsConst.primaryIndexQuads, false) ;
 
-    private String             primaryIndexPrefix    = StoreParamsConst.primaryIndexPrefix ;
+    private Item<String[]>           quadIndexes           = new Item<>(StoreParamsConst.quadIndexes, false) ;
 
-    private String[]           prefixIndexes         = StoreParamsConst.prefixIndexes ;
+    private Item<String>             primaryIndexPrefix    = new Item<>(StoreParamsConst.primaryIndexPrefix, false) ;
 
-    private String             indexPrefix           = StoreParamsConst.indexPrefix ;
+    private Item<String[]>           prefixIndexes         = new Item<>(StoreParamsConst.prefixIndexes, false) ;
 
-    private String             prefixNode2Id         = StoreParamsConst.prefixNode2Id ;
+    private Item<String>             indexPrefix           = new Item<>(StoreParamsConst.indexPrefix, false) ;
 
-    private String             prefixId2Node         = StoreParamsConst.prefixId2Node ;
+    private Item<String>             prefixNode2Id         = new Item<>(StoreParamsConst.prefixNode2Id, false) ;
 
+    private Item<String>             prefixId2Node         = new Item<>(StoreParamsConst.prefixId2Node, false) ;
+    
     public static StoreParamsBuilder create() {
         return new StoreParamsBuilder() ;
     }
@@ -79,42 +116,57 @@ public class StoreParamsBuilder {
      */
     
     public static StoreParams modify(StoreParams baseParams, StoreParamsDynamic additionalParams) {
-        return new StoreParamsBuilder(baseParams)
-            .fileMode(additionalParams.getFileMode())
-            .blockSize(additionalParams.getBlockSize())
-            .blockReadCacheSize(additionalParams.getBlockReadCacheSize())
-            .blockWriteCacheSize(additionalParams.getBlockWriteCacheSize())
-            .node2NodeIdCacheSize(additionalParams.getNode2NodeIdCacheSize())
-            .nodeId2NodeCacheSize(additionalParams.getNodeId2NodeCacheSize())
-            .nodeMissCacheSize(additionalParams.getNodeMissCacheSize())
-            .build();
+        StoreParamsBuilder b = new StoreParamsBuilder(baseParams) ;
+        // Merge explicitly set params 
+        if ( additionalParams.isSetFileMode() )
+            b.fileMode(additionalParams.getFileMode()) ;
+        
+        if ( additionalParams.isSetBlockReadCacheSize() )
+            b.blockReadCacheSize(additionalParams.getBlockReadCacheSize()) ;
+
+        if ( additionalParams.isSetBlockWriteCacheSize() )
+            b.blockWriteCacheSize(additionalParams.getBlockWriteCacheSize()) ;
+        
+        if ( additionalParams.isSetNode2NodeIdCacheSize() )            
+            b.node2NodeIdCacheSize(additionalParams.getNode2NodeIdCacheSize()) ;
+        
+        if ( additionalParams.isSetNodeId2NodeCacheSize() )            
+            b.nodeId2NodeCacheSize(additionalParams.getNodeId2NodeCacheSize()) ;
+        
+        if ( additionalParams.isSetNodeMissCacheSize() )
+            b.nodeMissCacheSize(additionalParams.getNodeMissCacheSize()) ;
+
+        return b.build();
     }
     
+
     private StoreParamsBuilder() {}
+    
+    /** Initial with a StoreParams as default values */
     private StoreParamsBuilder(StoreParams other) {
-        this.fileMode               = other.getFileMode() ;
-        this.blockSize              = other.getBlockSize() ;
-        this.blockReadCacheSize     = other.getBlockReadCacheSize() ;
-        this.blockWriteCacheSize    = other.getBlockWriteCacheSize() ;
-        this.Node2NodeIdCacheSize   = other.getNode2NodeIdCacheSize() ;
-        this.NodeId2NodeCacheSize   = other.getNodeId2NodeCacheSize() ;
-        this.NodeMissCacheSize      = other.getNodeMissCacheSize() ;
-
-        this.indexNode2Id           = other.getIndexNode2Id() ;
-        this.indexId2Node           = other.getIndexId2Node() ;
+        this.fileMode               = other.fileMode ;
+        this.blockSize              = other.blockSize ;
+        this.blockReadCacheSize     = other.blockReadCacheSize ; 
+        this.blockWriteCacheSize    = other.blockWriteCacheSize ; 
+        this.Node2NodeIdCacheSize   = other.Node2NodeIdCacheSize ; 
+        this.NodeId2NodeCacheSize   = other.NodeId2NodeCacheSize ; 
+        this.NodeMissCacheSize      = other.NodeMissCacheSize ; 
+
+        this.indexNode2Id           = other.indexNode2Id ; 
+        this.indexId2Node           = other.indexId2Node ; 
         
-        this.primaryIndexTriples    = other.getPrimaryIndexTriples() ;
-        this.tripleIndexes          = other.getTripleIndexes() ;
+        this.primaryIndexTriples    = other.primaryIndexTriples ; 
+        this.tripleIndexes          = other.tripleIndexes ; 
         
-        this.primaryIndexQuads      = other.getPrimaryIndexQuads() ;
-        this.quadIndexes            = other.getQuadIndexes() ;
-        
-        this.primaryIndexPrefix     = other.getPrimaryIndexPrefix() ;
-        this.prefixIndexes          = other.getPrefixIndexes() ;
-        this.indexPrefix            = other.getIndexPrefix() ;
+        this.primaryIndexQuads      = other.primaryIndexQuads ; 
+        this.quadIndexes            = other.quadIndexes ; 
+
+        this.primaryIndexPrefix     = other.primaryIndexPrefix ; 
+        this.prefixIndexes          = other.prefixIndexes ; 
+        this.indexPrefix            = other.indexPrefix ; 
 
-        this.prefixNode2Id          = other.getPrefixNode2Id() ;
-        this.prefixId2Node          = other.getPrefixId2Node() ;
+        this.prefixNode2Id          = other.prefixNode2Id ; 
+        this.prefixId2Node          = other.prefixId2Node ; 
     }
     
     public StoreParams build() {
@@ -127,185 +179,165 @@ public class StoreParamsBuilder {
                  prefixNode2Id, prefixId2Node) ;
     }
     
-//    public SystemParams build(String filename) {
-//        JsonObject obj = JSON.read(filename) ;
-//        return null ;
-//    }
-
     public FileMode getFileMode() {
-        return fileMode ;
+        return fileMode.value ;
     }
     
     public StoreParamsBuilder fileMode(FileMode fileMode) {
-        this.fileMode = fileMode ;
+        this.fileMode = new Item<>(fileMode, true) ;
         return this ;
     }
     
     public int getBlockSize() {
-        return blockSize ;
+        return blockSize.value ;
     }
 
     public StoreParamsBuilder blockSize(int blockSize) {
-        this.blockSize = blockSize ;
+        this.blockSize = new Item<>(blockSize, true) ;
         return this ;
     }
 
     public int getBlockReadCacheSize() {
-        return blockReadCacheSize ;
+        return blockReadCacheSize.value ;
     }
 
     public StoreParamsBuilder blockReadCacheSize(int blockReadCacheSize) {
-        this.blockReadCacheSize = blockReadCacheSize ;
+        this.blockReadCacheSize = new Item<>(blockReadCacheSize, true) ;
         return this ;
     }
 
     public int getBlockWriteCacheSize() {
-        return blockWriteCacheSize ;
+        return blockWriteCacheSize.value ;
     }
 
    public StoreParamsBuilder blockWriteCacheSize(int blockWriteCacheSize) {
-       this.blockWriteCacheSize = blockWriteCacheSize ;
+       this.blockWriteCacheSize = new Item<>(blockWriteCacheSize, true) ;
        return this ;
    }
 
     public int getNode2NodeIdCacheSize() {
-        return Node2NodeIdCacheSize ;
+        return Node2NodeIdCacheSize.value ;
     }
 
    public StoreParamsBuilder node2NodeIdCacheSize(int node2NodeIdCacheSize) {
-       Node2NodeIdCacheSize = node2NodeIdCacheSize ;
+       Node2NodeIdCacheSize = new Item<>(node2NodeIdCacheSize, true) ;
        return this ;
    }
 
     public int getNodeId2NodeCacheSize() {
-        return NodeId2NodeCacheSize ;
+        return NodeId2NodeCacheSize.value ;
     }
 
    public StoreParamsBuilder nodeId2NodeCacheSize(int nodeId2NodeCacheSize) {
-       NodeId2NodeCacheSize = nodeId2NodeCacheSize ;
+       NodeId2NodeCacheSize = new Item<>(nodeId2NodeCacheSize, true) ;
        return this ;
    }
 
     public int getNodeMissCacheSize() {
-        return NodeMissCacheSize ;
+        return NodeMissCacheSize.value ;
     }
 
    public StoreParamsBuilder nodeMissCacheSize(int nodeMissCacheSize) {
-       NodeMissCacheSize = nodeMissCacheSize ;
+       NodeMissCacheSize = new Item<>(nodeMissCacheSize, true) ;
        return this ;
    }
 
     public String getIndexNode2Id() {
-        return indexNode2Id ;
+        return indexNode2Id.value ;
     }
 
    public StoreParamsBuilder indexNode2Id(String indexNode2Id) {
-       this.indexNode2Id = indexNode2Id ;
+       this.indexNode2Id = new Item<>(indexNode2Id, true) ;
        return this ;
    }
 
     public String getIndexId2Node() {
-        return indexId2Node ;
+        return indexId2Node.value ;
     }
 
    public StoreParamsBuilder indexId2Node(String indexId2Node) {
-       this.indexId2Node = indexId2Node ;
+       this.indexId2Node = new Item<>(indexId2Node, true) ;
        return this ;
    }
 
     public String getPrimaryIndexTriples() {
-        return primaryIndexTriples ;
+        return primaryIndexTriples.value ;
     }
 
    public StoreParamsBuilder primaryIndexTriples(String primaryIndexTriples) {
-       this.primaryIndexTriples = primaryIndexTriples ;
+       this.primaryIndexTriples = new Item<>(primaryIndexTriples, true) ;
        return this ;
    }
 
     public String[] getTripleIndexes() {
-        return tripleIndexes ;
+        return tripleIndexes.value ;
     }
 
    public StoreParamsBuilder tripleIndexes(String[] tripleIndexes) {
-       this.tripleIndexes = tripleIndexes ;
+       this.tripleIndexes = new Item<>(tripleIndexes, true) ;
        return this ;
    }
 
-   public StoreParamsBuilder tripleIndexes(int idx, String tripleIndex) {
-       this.tripleIndexes[idx] = tripleIndex ;
-       return this ;
+   public String getPrimaryIndexQuads() {
+       return primaryIndexQuads.value ;
    }
 
-    public String getPrimaryIndexQuads() {
-        return primaryIndexQuads ;
-    }
-
    public StoreParamsBuilder primaryIndexQuads(String primaryIndexQuads) {
-       this.primaryIndexQuads = primaryIndexQuads ;
+       this.primaryIndexQuads = new Item<>(primaryIndexQuads, true) ;
        return this ;
    }
 
     public String[] getQuadIndexes() {
-        return quadIndexes ;
+        return quadIndexes.value ;
     }
 
-   public StoreParamsBuilder quadIndexes(int idx, String quadIndex) {
-       this.quadIndexes[idx] = quadIndex ;
-       return this ;
-   }
-
    public StoreParamsBuilder quadIndexes(String[] quadIndexes) {
-       this.quadIndexes = quadIndexes ;
+       this.quadIndexes = new Item<>(quadIndexes, true) ;
        return this ;
    }
 
     public String getPrimaryIndexPrefix() {
-        return primaryIndexPrefix ;
+        return primaryIndexPrefix.value ;
     }
 
    public StoreParamsBuilder primaryIndexPrefix(String primaryIndexPrefix) {
-       this.primaryIndexPrefix = primaryIndexPrefix ;
+       this.primaryIndexPrefix = new Item<>(primaryIndexPrefix, true) ;
        return this ;
    }
 
     public String[] getPrefixIndexes() {
-        return prefixIndexes ;
+        return prefixIndexes.value ;
     }
 
    public StoreParamsBuilder prefixIndexes(String[] prefixIndexes) {
-       this.prefixIndexes = prefixIndexes ;
-       return this ;
-   }
-
-   public StoreParamsBuilder prefixIndexes(int idx, String prefixIndex) {
-       this.prefixIndexes[idx] = prefixIndex ;
+       this.prefixIndexes = new Item<>(prefixIndexes, true) ;
        return this ;
    }
 
     public String getIndexPrefix() {
-        return indexPrefix ;
+        return indexPrefix.value ;
     }
 
    public StoreParamsBuilder indexPrefix(String indexPrefix) {
-       this.indexPrefix = indexPrefix ;
+       this.indexPrefix = new Item<>(indexPrefix, true) ;
        return this ;
    }
 
     public String getPrefixNode2Id() {
-        return prefixNode2Id ;
+        return prefixNode2Id.value ;
     }
 
    public StoreParamsBuilder prefixNode2Id(String prefixNode2Id) {
-       this.prefixNode2Id = prefixNode2Id ;
+       this.prefixNode2Id = new Item<>(prefixNode2Id, true) ;
        return this ;
    }
 
     public String getPrefixId2Node() {
-        return prefixId2Node ;
+        return prefixId2Node.value ;
     }
 
    public StoreParamsBuilder prefixId2Node(String prefixId2Node) {
-       this.prefixId2Node = prefixId2Node ;
+       this.prefixId2Node = new Item<>(prefixId2Node, true) ;
        return this ;
    }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
index 93a8ea2..49cdd44 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
@@ -18,6 +18,33 @@
 
 package com.hp.hpl.jena.tdb.setup;
 
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.TDB_CONFIG_FILE ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fBlockReadCacheSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fBlockSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fBlockWriteCacheSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fFileMode ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fIndexId2Node ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fIndexNode2Id ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fIndexPrefix ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fNode2NodeIdCacheSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fNodeId2NodeCacheSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fNodeMissCacheSize ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrefixId2Node ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrefixIndexes ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrefixNode2Id ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrimaryIndexPrefix ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrimaryIndexQuads ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fPrimaryIndexTriples ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fQuadIndexes ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.fTripleIndexes ;
+
+import java.io.BufferedOutputStream ;
+import java.io.FileOutputStream ;
+import java.io.IOException ;
+import java.io.OutputStream ;
+
+import org.apache.jena.atlas.io.IO ;
+import org.apache.jena.atlas.json.JSON ;
 import org.apache.jena.atlas.json.JsonArray ;
 import org.apache.jena.atlas.json.JsonBuilder ;
 import org.apache.jena.atlas.json.JsonObject ;
@@ -25,12 +52,38 @@ import org.apache.jena.atlas.json.JsonObject ;
 import com.hp.hpl.jena.sparql.util.Utils ;
 import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
-
-import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.* ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
 
 /** Encode and decode {@linkplain StoreParams} */ 
 public class StoreParamsCodec {
     
+    /** Write to a file */ 
+    public static void write(Location location, StoreParams params) {
+        write(location.getPath(TDB_CONFIG_FILE) ,params) ;
+    }
+    
+    /** Write to a file */ 
+    public static void write(String filename, StoreParams params) {
+        try (OutputStream out = new FileOutputStream(filename); 
+             OutputStream out2 = new BufferedOutputStream(out); ) {
+            JsonObject object = encodeToJson(params) ;
+            JSON.write(out2, object) ;
+            out2.write('\n') ;
+        }
+        catch (IOException ex) { IO.exception(ex); }
+    }
+
+    /** Read from a file */ 
+    public static StoreParams read(Location location) {
+        return read(location.getPath(TDB_CONFIG_FILE)) ;
+    }
+    
+    /** Read from a file */ 
+    public static StoreParams read(String filename) {
+        JsonObject obj = JSON.read(filename) ;
+        return StoreParamsCodec.decode(obj) ;
+    }
+    
     public static JsonObject encodeToJson(StoreParams params) {
         JsonBuilder builder = new JsonBuilder() ;
         builder.startObject("StoreParams") ;    // "StoreParams" is an internal alignment marker - not in the JSON.

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
index 70e6b6a..a06f42b 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
@@ -23,33 +23,11 @@ import com.hp.hpl.jena.tdb.sys.Names ;
 import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 
 public class StoreParamsConst {
+    /** Filename of the TDB configuration file */
+    public static final String TDB_CONFIG_FILE = "tdb.cfg" ;
     
     // SystemParams are built with a SystemParamsBuilder
     
-    /** The system default parameters for on-disk databases. */
-    static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
-
-    /** The system default parameters for in-memory databases. */
-    static StoreParams dftMemStoreParams = StoreParamsBuilder.create()
-        .fileMode(FileMode.direct)
-        // Small block caches, mainly so it behaves like a direct on-disk database.  
-        .blockReadCacheSize(10)
-        .blockWriteCacheSize(10)
-        .node2NodeIdCacheSize(10000)
-        .nodeId2NodeCacheSize(10000)
-        .nodeMissCacheSize(100)
-        .build() ;
-    
-    /** The "small store" parameters. */
-    static StoreParams smallStoreParams = StoreParamsBuilder.create()
-        .fileMode(FileMode.direct)
-        .blockReadCacheSize(100)
-        .blockWriteCacheSize(100)
-        .node2NodeIdCacheSize(10000)
-        .nodeId2NodeCacheSize(10000)
-        .nodeMissCacheSize(100)
-        .build() ;
-
     // Initial values are the system defaults.
     
     /** Database and query configuration */ 
@@ -109,6 +87,34 @@ public class StoreParamsConst {
     
     public static final String   fPrefixId2Node        = "file_prefix_id2node" ;
     public static final String   prefixId2Node         = Names.prefixId2Node ;
+
+    // Must be after the constants above to get initialization order right
+    // because StoreParamsBuilder uses these constants.
+     
+    /** The system default parameters for on-disk databases. */
+    static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
+
+    /** The system default parameters for in-memory databases. */
+    static StoreParams dftMemStoreParams = StoreParamsBuilder.create()
+        .fileMode(FileMode.direct)
+        // Small block caches, mainly so it behaves like a direct on-disk database.  
+        .blockReadCacheSize(10)
+        .blockWriteCacheSize(10)
+        .node2NodeIdCacheSize(10000)
+        .nodeId2NodeCacheSize(10000)
+        .nodeMissCacheSize(100)
+        .build() ;
     
+    /** The "small store" parameters. */
+    static StoreParams smallStoreParams = StoreParamsBuilder.create()
+        .fileMode(FileMode.direct)
+        .blockReadCacheSize(100)
+        .blockWriteCacheSize(100)
+        .node2NodeIdCacheSize(10000)
+        .nodeId2NodeCacheSize(10000)
+        .nodeMissCacheSize(100)
+        .build() ;
+
+
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
index ca6290a..ed07e76 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsDynamic.java
@@ -21,7 +21,7 @@ package com.hp.hpl.jena.tdb.setup;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
 
 /** Store parameters that can be adjusted after a store has been created,
- *  and given different values when the JVM attaches to a store area. 
+ *  and given different values when the JVM attachs to a store area. 
  *  (They are still fixed for any given database once created in a JVM.) 
  */
 
@@ -29,23 +29,26 @@ public interface StoreParamsDynamic {
     
     /** Store-wide file access mode */ 
     public FileMode getFileMode() ;
+    public boolean isSetFileMode() ;
     
-    /** Block size - must agree with the original creation of the database */ 
-    public int getBlockSize() ;
-
     /** Block read cache (note: mapped files do not have a block cache) */
-    public int getBlockReadCacheSize() ;
+    public Integer getBlockReadCacheSize() ;
+    public boolean isSetBlockReadCacheSize() ;
 
     /** Block write cache (note: mapped files do not have a block cache) */
-    public int getBlockWriteCacheSize() ;
+    public Integer getBlockWriteCacheSize() ;
+    public boolean isSetBlockWriteCacheSize() ;
     
     /** Node cache for Node->NodeId. */
-    public int getNode2NodeIdCacheSize() ;
+    public Integer getNode2NodeIdCacheSize() ;
+    public boolean isSetNode2NodeIdCacheSize() ;
     
     /** Node cache for NodeId->Node. Important for SPARQL results. */
-    public int getNodeId2NodeCacheSize() ;
+    public Integer getNodeId2NodeCacheSize() ;
+    public boolean isSetNodeId2NodeCacheSize() ;
 
     /** Node cache for recording known misses */
-    public int getNodeMissCacheSize() ;
+    public Integer getNodeMissCacheSize() ;
+    public boolean isSetNodeMissCacheSize() ;
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java
index 2a2e58f..5c260af 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java
@@ -24,6 +24,8 @@ import org.junit.runners.Suite ;
 @RunWith(Suite.class)
 @Suite.SuiteClasses( {
     TestStoreParams.class
+    , TestStoreParamsChoose.class
+    , TestStoreParamsCreate.class
 })
 public class TS_TDBSetup {
     

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
index 1762518..64655a1 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
@@ -18,17 +18,14 @@
 
 package com.hp.hpl.jena.tdb.setup;
 
-import java.util.Objects ;
-
-import com.hp.hpl.jena.tdb.TDBException ;
-import com.hp.hpl.jena.tdb.base.block.FileMode ;
-
 import org.apache.jena.atlas.json.JSON ;
 import org.apache.jena.atlas.json.JsonObject ;
 import org.apache.jena.atlas.junit.BaseTest ;
-import org.apache.jena.atlas.lib.InternalErrorException ;
 import org.junit.Test ;
 
+import com.hp.hpl.jena.tdb.TDBException ;
+import com.hp.hpl.jena.tdb.base.block.FileMode ;
+
 public class TestStoreParams extends BaseTest {
 
     @Test public void store_params_01() {
@@ -95,6 +92,43 @@ public class TestStoreParams extends BaseTest {
         assertArrayEquals(expected, params.getTripleIndexes()) ;
     }
 
+    // Check that setting gets recorded and propagated.
+
+    @Test public void store_params_20() {
+        StoreParams params = StoreParamsBuilder.create().blockReadCacheSize(0).build();
+        assertTrue(params.isSetBlockReadCacheSize()) ;
+        assertFalse(params.isSetBlockWriteCacheSize()) ;
+    }
+    
+    @Test public void store_params_21() {
+        StoreParams params1 = StoreParamsBuilder.create().blockReadCacheSize(0).build();
+        assertTrue(params1.isSetBlockReadCacheSize()) ;
+        assertFalse(params1.isSetBlockWriteCacheSize()) ;
+        StoreParams params2 = StoreParamsBuilder.create(params1).blockWriteCacheSize(0).build();
+        assertTrue(params2.isSetBlockReadCacheSize()) ;
+        assertTrue(params2.isSetBlockWriteCacheSize()) ;
+        assertFalse(params2.isSetNodeMissCacheSize()) ;
+    }
+
+    // Modify
+    @Test public void store_params_22() {
+        StoreParams params1 = StoreParamsBuilder.create()
+            .blockReadCacheSize(0)
+            .blockWriteCacheSize(1)
+            .build();
+        StoreParams params2 = StoreParamsBuilder.create()
+            .blockReadCacheSize(5)
+            .build();
+        StoreParams params3 = StoreParamsBuilder.modify(params1, params2) ;
+        assertFalse(params2.isSetBlockWriteCacheSize()) ;
+        assertTrue(params3.isSetBlockReadCacheSize()) ;
+        assertTrue(params3.isSetBlockWriteCacheSize()) ;
+        assertEquals(5, params3.getBlockReadCacheSize().intValue()) ;   // From params2
+        assertEquals(1, params3.getBlockWriteCacheSize().intValue()) ;  // From params1, not params2(unset)
+        
+    }
+
+    
     // --------
     
     private static StoreParams roundTrip(StoreParams params) {
@@ -104,22 +138,6 @@ public class TestStoreParams extends BaseTest {
     }
     
     private static void assertEqualsStoreParams(StoreParams params1, StoreParams params2) {
-        assertTrue(same(params1, params2)) ;
-    }
-    
-    private static boolean same(StoreParams params1, StoreParams params2) {
-        boolean b0 = same0(params1, params2) ;
-        boolean b1 = same1(params1, params2) ;
-        if ( b0 != b1 )
-            throw new InternalErrorException() ; 
-        return b0 ;
-    }
-    
-    private static boolean same0(StoreParams params1, StoreParams params2) {
-        return params1.toString().equals(params2.toString()) ;
-    }
-    
-    private static boolean same1(StoreParams params1, StoreParams params2) {
-        return Objects.equals(params1, params2) ;
+        assertTrue(StoreParams.sameValues(params1, params2)) ;
     }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
new file mode 100644
index 0000000..b61cb4c
--- /dev/null
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
@@ -0,0 +1,155 @@
+/**
+ * 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 com.hp.hpl.jena.tdb.setup;
+
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.FileOps ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.tdb.base.file.Location ;
+
+//TestParamsCreate
+/** This test suite uses on-diskstructures and can be slow */ 
+public class TestStoreParamsChoose extends BaseTest {
+    StoreParams pApp = StoreParamsBuilder.create()
+        .blockSize(12)              // Not dynamic
+        .nodeMissCacheSize(12)      // Dynamic
+        .build();
+    StoreParams pLoc = StoreParamsBuilder.create()
+        .blockSize(0)
+        .nodeMissCacheSize(0).build();
+    
+    StoreParams pDft = StoreParams.getDftStoreParams() ;
+
+    @Test public void params_choose_new_1() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), true, null, null, pDft) ;
+        // New store, no pLoc, no pApp so pDft.
+        assertTrue(StoreParams.sameValues(p, pDft)) ;
+    }
+    
+    @Test public void params_choose_new_2() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, null, pDft) ;
+        // New store, no pLoc, so pApp is the enire settings.
+        assertEquals(12, p.getBlockSize().intValue()) ;
+        assertTrue(StoreParams.sameValues(p, pApp)) ;
+    }
+
+    @Test public void params_choose_new_3() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), true, null, pLoc, pDft) ;
+        // New store, pLoc, no pApp, so pLoc is the entire settings.
+        assertEquals(0, p.getBlockSize().intValue()) ;
+        assertTrue(StoreParams.sameValues(p, pLoc)) ;
+    }
+
+    @Test public void params_choose_new_4() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, pLoc, pDft) ;
+        // New store, pLoc, no pApp, so pLoc is the entire settings.
+        
+        assertFalse(StoreParams.sameValues(p, pApp)) ;
+        assertFalse(StoreParams.sameValues(p, pLoc)) ;
+        assertFalse(StoreParams.sameValues(p, pDft)) ;
+        
+        assertEquals(0, p.getBlockSize().intValue()) ;
+        assertEquals(12,  p.getNodeMissCacheSize().intValue()) ;
+    }
+
+    @Test public void params_choose_existing_1() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), false, null, null, pDft) ;
+        // p is pDft.
+        assertTrue(StoreParams.sameValues(p, pDft)) ;
+    }
+
+    @Test public void params_choose_existing_2() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, null, pDft) ;
+        // p is pLoc modified by pApp
+        assertFalse(StoreParams.sameValues(p, pApp)) ;
+        assertFalse(StoreParams.sameValues(p, pDft)) ;
+        // Existing store, no pLoc, so pDft is implicit pLoc and fixed the block size.  
+        assertEquals(pDft.getBlockSize(), p.getBlockSize()) ;
+        assertEquals(12, p.getNodeMissCacheSize().intValue()) ;
+    }
+    
+    @Test public void params_choose_existing_3() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), false, null, pLoc, pDft) ;
+        // p is pLoc
+        assertTrue(StoreParams.sameValues(p, pLoc)) ;
+        
+    }
+
+    @Test public void params_choose_existing_4() {
+        StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, pLoc, pDft) ;
+        // p is pLoc modifed by pApp.
+        assertFalse(StoreParams.sameValues(p, pApp)) ;
+        assertFalse(StoreParams.sameValues(p, pLoc)) ;
+        assertFalse(StoreParams.sameValues(p, pDft)) ;
+        
+        assertEquals(0, p.getBlockSize().intValue()) ;
+        assertEquals(12,  p.getNodeMissCacheSize().intValue()) ;
+    }
+    
+    @Test public void params_choose_new_persist_1() {
+        // new database, app defined.
+        Location loc = Location.create("target/test/DB") ;
+        FileOps.clearAll(loc.getDirectoryPath());
+        // Clear.
+        StoreParams p = Build.fixStoreParams(loc, true, pApp, null, pDft) ;
+        // Check location now has a pLoc.
+        String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
+        assertTrue(FileOps.exists(fn)) ;
+
+        StoreParams pLoc2 = StoreParamsCodec.read(loc) ;
+        assertTrue(StoreParams.sameValues(pLoc2, p)) ;
+    }
+    
+    @Test public void params_choose_new_persist_2() {
+        // new database, location defined.
+        Location loc = Location.create("target/test/DB") ;
+        FileOps.clearAll(loc.getDirectoryPath());
+        StoreParamsCodec.write(loc, pLoc); 
+        
+        // Clear.
+        StoreParams p = Build.fixStoreParams(loc, true, null, pLoc, pDft) ;
+        // Check location still has a pLoc.
+        String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
+        assertTrue(FileOps.exists(fn)) ;
+
+        StoreParams pLoc2 = StoreParamsCodec.read(loc) ;
+        assertTrue(StoreParams.sameValues(pLoc, p)) ;
+    }
+
+    @Test public void params_choose_new_persist_3() {
+        // new database, location defined, application modified.
+        Location loc = Location.create("target/test/DB") ;
+        FileOps.clearAll(loc.getDirectoryPath());
+        StoreParamsCodec.write(loc, pLoc); 
+        
+        // Clear.
+        StoreParams p = Build.fixStoreParams(loc, true, pApp, pLoc, pDft) ;
+        // Check location still has a pLoc.
+        String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
+        assertTrue(FileOps.exists(fn)) ;
+
+        StoreParams pLoc2 = StoreParamsCodec.read(loc) ;
+        assertFalse(StoreParams.sameValues(pLoc, p)) ;
+        assertEquals(0, p.getBlockSize().intValue()) ;  // Location
+        assertEquals(12, p.getNodeMissCacheSize().intValue()) ;  // Application
+    }
+
+}
+

http://git-wip-us.apache.org/repos/asf/jena/blob/25d16cbb/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
new file mode 100644
index 0000000..55c0d3f
--- /dev/null
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
@@ -0,0 +1,83 @@
+/**
+ * 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 com.hp.hpl.jena.tdb.setup;
+
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.TDB_CONFIG_FILE ;
+
+import java.io.File ;
+import java.io.FileOutputStream ;
+import java.io.IOException ;
+import java.nio.file.Files ;
+import java.nio.file.Path ;
+import java.nio.file.Paths ;
+
+import org.apache.jena.atlas.json.JSON ;
+import org.apache.jena.atlas.json.JsonObject ;
+import org.apache.jena.atlas.junit.BaseTest ;
+import org.apache.jena.atlas.lib.FileOps ;
+import org.junit.After ;
+import org.junit.Before ;
+import org.junit.Test ;
+
+import com.hp.hpl.jena.tdb.StoreConnection ;
+import com.hp.hpl.jena.tdb.base.file.Location ;
+import com.hp.hpl.jena.tdb.setup.StoreParams ;
+import com.hp.hpl.jena.tdb.setup.StoreParamsCodec ;
+
+//TestParamsCreate
+/** This test suite uses on-diskstructures and can be slow */ 
+public class TestStoreParamsCreate extends BaseTest {
+    static String DB_DIR = "target/test/DB" ; 
+    
+    @Before public void clearAnyDatabase() {
+        FileOps.clearAll(new File(DB_DIR)); 
+    }
+
+    @After public void clearupTest() {}
+
+    
+    @Test public void params_create_01() {
+        Location loc = Location.create(DB_DIR) ;
+        StoreConnection.make(loc, null) ;
+        Path db = Paths.get(DB_DIR) ;
+        assertTrue("DB directory", Files.exists(db)) ;
+        Path dbCfg = db.resolve(TDB_CONFIG_FILE) ;
+        // Fake it.
+        try {
+            new FileOutputStream(dbCfg.toFile()).close();
+        }
+        catch (IOException e) {
+            e.printStackTrace();
+        }
+        
+        
+        assertTrue("DB config file", Files.exists(dbCfg)) ;
+        
+    }
+    
+    // Create store.
+    // Test params.
+    
+    static StoreParams read(Location location) {
+        String fn = location.getPath(TDB_CONFIG_FILE) ;
+        JsonObject obj = JSON.read(fn) ;
+        return StoreParamsCodec.decode(obj) ;
+    }
+}
+


[09/13] jena git commit: Constants.

Posted by an...@apache.org.
Constants.

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

Branch: refs/heads/master
Commit: ac8a7d9f0bd003fcd99147811436aa4541599ef9
Parents: 25d16cb
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 7 20:45:54 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 7 20:45:54 2014 +0000

----------------------------------------------------------------------
 .../java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/ac8a7d9f/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
index b61cb4c..fb50f33 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
@@ -27,15 +27,15 @@ import com.hp.hpl.jena.tdb.base.file.Location ;
 //TestParamsCreate
 /** This test suite uses on-diskstructures and can be slow */ 
 public class TestStoreParamsChoose extends BaseTest {
-    StoreParams pApp = StoreParamsBuilder.create()
+    static final StoreParams pApp = StoreParamsBuilder.create()
         .blockSize(12)              // Not dynamic
         .nodeMissCacheSize(12)      // Dynamic
         .build();
-    StoreParams pLoc = StoreParamsBuilder.create()
+    static final StoreParams pLoc = StoreParamsBuilder.create()
         .blockSize(0)
         .nodeMissCacheSize(0).build();
     
-    StoreParams pDft = StoreParams.getDftStoreParams() ;
+    static final StoreParams pDft = StoreParams.getDftStoreParams() ;
 
     @Test public void params_choose_new_1() {
         StoreParams p = Build.fixStoreParams(Location.mem(), true, null, null, pDft) ;


[13/13] jena git commit: Merge branch 'tdb-store-params'

Posted by an...@apache.org.
Merge branch 'tdb-store-params'


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

Branch: refs/heads/master
Commit: 4a45e361739bd2c8e2df56a9bc02015728b011bf
Parents: d910ff4 15a9317
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Nov 8 16:34:26 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Nov 8 16:34:26 2014 +0000

----------------------------------------------------------------------
 .../main/java/org/apache/jena/atlas/io/IO.java  |   3 +-
 .../java/org/apache/jena/atlas/json/JSON.java   |  19 +-
 .../java/org/apache/jena/atlas/lib/FileOps.java |   8 +
 .../apache/jena/fuseki/server/SystemState.java  |   2 +-
 .../com/hp/hpl/jena/tdb/StoreConnection.java    |  20 +-
 .../java/com/hp/hpl/jena/tdb/TDBFactory.java    |   6 +-
 .../jena/tdb/assembler/DatasetAssemblerTDB.java |   2 +-
 .../jena/tdb/assembler/NodeTableAssembler.java  |   4 +-
 .../jena/tdb/assembler/TDBGraphAssembler.java   |   2 +-
 .../hp/hpl/jena/tdb/base/block/BlockParams.java |   6 +-
 .../com/hp/hpl/jena/tdb/base/file/FileSet.java  |   4 +-
 .../com/hp/hpl/jena/tdb/base/file/Location.java |  10 +-
 .../com/hp/hpl/jena/tdb/index/IndexParams.java  |   6 +-
 .../java/com/hp/hpl/jena/tdb/setup/Build.java   |  72 +++-
 .../hpl/jena/tdb/setup/DatasetBuilderStd.java   | 108 +++---
 .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 370 +++++++++++++------
 .../hpl/jena/tdb/setup/StoreParamsBuilder.java  | 275 +++++++-------
 .../hp/hpl/jena/tdb/setup/StoreParamsCodec.java |  65 +++-
 .../hp/hpl/jena/tdb/setup/StoreParamsConst.java | 118 ++++++
 .../hpl/jena/tdb/setup/StoreParamsDynamic.java  |  18 +-
 .../tdb/store/bulkloader2/CmdIndexBuild.java    |   2 +-
 .../tdb/store/bulkloader2/CmdIndexCopy.java     |   4 +-
 .../store/bulkloader2/CmdNodeTableBuilder.java  |   4 +-
 .../java/com/hp/hpl/jena/tdb/sys/DebugTDB.java  |   2 +-
 .../java/com/hp/hpl/jena/tdb/sys/TDBMaker.java  |  32 +-
 jena-tdb/src/main/java/tdb/CmdRewriteIndex.java |   4 +-
 .../src/main/java/tdb/cmdline/ModLocation.java  |   2 +-
 .../main/java/tdb/cmdline/ModTDBDataset.java    |   2 +-
 .../src/main/java/tdb/tools/dumpnodetable.java  |   2 +-
 .../src/main/java/tdb/tools/tdbgenindex.java    |   4 +-
 .../jena/tdb/base/file/TestLocationLock.java    |  12 +-
 .../tdb/base/objectfile/TestStringFileDisk.java |   2 +-
 .../hpl/jena/tdb/extra/T_QuadsObjectIsNull.java |   2 +-
 .../jena/tdb/extra/T_TDBWriteTransaction.java   |   2 +-
 .../hp/hpl/jena/tdb/extra/T_TransSystem.java    |   6 +-
 .../tdb/extra/T_TransSystemMultiDatasets.java   |   4 +-
 .../jena/tdb/graph/TestPrefixMappingTDB.java    |   6 +-
 .../com/hp/hpl/jena/tdb/setup/TS_TDBSetup.java  |   2 +
 .../hp/hpl/jena/tdb/setup/TestStoreParams.java  |  90 +++--
 .../jena/tdb/setup/TestStoreParamsChoose.java   | 155 ++++++++
 .../jena/tdb/setup/TestStoreParamsCreate.java   | 171 +++++++++
 .../jena/tdb/store/TestDatasetTDBPersist.java   |   2 +-
 .../com/hp/hpl/jena/tdb/store/TestGraphTDB.java |   2 +-
 .../com/hp/hpl/jena/tdb/store/TestLoader.java   |   2 +-
 .../tdb/transaction/TestNodeTableTransDisk.java |   2 +-
 .../transaction/TestObjectFileTransStorage.java |   4 +-
 .../jena/tdb/transaction/TestTransRestart.java  |   4 +-
 .../tdb/transaction/TestTransactionTDB.java     |   2 +-
 48 files changed, 1238 insertions(+), 408 deletions(-)
----------------------------------------------------------------------



[06/13] jena git commit: Add clearAll(String)

Posted by an...@apache.org.
Add clearAll(String)

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

Branch: refs/heads/master
Commit: 879742c087fd73c665cfa12cfdd63d875d9b49f4
Parents: 906be05
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Nov 7 12:23:53 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Nov 7 12:23:53 2014 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/jena/atlas/lib/FileOps.java     | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/879742c0/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java b/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
index 98a8616..6862f4a 100644
--- a/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
+++ b/jena-arq/src/main/java/org/apache/jena/atlas/lib/FileOps.java
@@ -74,7 +74,15 @@ public class FileOps {
     }
 
     /** Delete all files and directories (recursively) in a directory */
+    public static void clearAll(String d) {
+        clearAll(new File(d)) ;
+    }
+
+    /** Delete all files and directories (recursively) in a directory */
     public static void clearAll(File d) {
+        if ( ! d.exists() )
+            return ;
+        
         for ( File f : d.listFiles() ) {
             if ( ".".equals(f.getName()) || "..".equals(f.getName()) )
                 continue ;


[11/13] jena git commit: Integrate new StoreParams into database creation.

Posted by an...@apache.org.
Integrate new StoreParams into database creation.

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

Branch: refs/heads/master
Commit: 0bf297734e4d61a52460b76c351bafad097ad466
Parents: f53761d
Author: Andy Seaborne <an...@apache.org>
Authored: Sat Nov 8 16:19:10 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat Nov 8 16:19:10 2014 +0000

----------------------------------------------------------------------
 .../com/hp/hpl/jena/tdb/StoreConnection.java    |   2 +-
 .../java/com/hp/hpl/jena/tdb/setup/Build.java   |   6 +-
 .../hpl/jena/tdb/setup/DatasetBuilderStd.java   | 107 ++++++--------
 .../com/hp/hpl/jena/tdb/setup/StoreParams.java  |  11 ++
 .../hp/hpl/jena/tdb/setup/StoreParamsCodec.java |  14 +-
 .../hp/hpl/jena/tdb/setup/StoreParamsConst.java |   8 +-
 .../hp/hpl/jena/tdb/setup/TestStoreParams.java  |  22 +--
 .../jena/tdb/setup/TestStoreParamsChoose.java   |  26 ++--
 .../jena/tdb/setup/TestStoreParamsCreate.java   | 138 +++++++++++++++----
 .../jena/tdb/transaction/TestTransRestart.java  |   2 +-
 10 files changed, 209 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
index 5935a9a..dbf9865 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
@@ -230,7 +230,7 @@ public class StoreConnection
         return sConn ;
     }
 
-    /** Make a StoreConnection based on any StoreParams at eh location or the system defaults. */
+    /** Make a StoreConnection based on any StoreParams at the location or the system defaults. */
     public static StoreConnection make(Location location) {
         return make(location, null) ;
     }

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
index 558846a..b23d804 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java
@@ -49,7 +49,7 @@ public class Build
         // XXX replace with:
         // return DatasetBuilderStd.stdBuilder().makeTupleIndex(location, indexName, primary, indexOrder) ;
         // All this to BuilderDB.
-        StoreParamsBuilder spb = StoreParamsBuilder.create() ;
+        StoreParamsBuilder spb = StoreParams.builder() ;
         spb.blockReadCacheSize(readCacheSize) ;
         spb.blockWriteCacheSize(writeCacheSize) ;
         RecordFactory recordFactory = new RecordFactory(dftKeyLength, dftValueLength) ;
@@ -78,7 +78,7 @@ public class Build
                                           String indexNode2Id, int node2NodeIdCacheSize,
                                           String indexId2Node, int nodeId2NodeCacheSize,
                                           int sizeNodeMissCacheSize) {
-        StoreParamsBuilder spb = StoreParamsBuilder.create() ;
+        StoreParamsBuilder spb = StoreParams.builder() ;
         spb.indexNode2Id(indexNode2Id).node2NodeIdCacheSize(node2NodeIdCacheSize) ;
         spb.indexId2Node(indexId2Node).nodeId2NodeCacheSize(nodeId2NodeCacheSize) ;
         DatasetBuilderStd dbBuild = DatasetBuilderStd.stdBuilder() ;
@@ -125,7 +125,7 @@ public class Build
      * @see StoreParams
      * @see StoreParamsDynamic
      */
-    static StoreParams fixStoreParams(Location location, boolean isNew, StoreParams pApp, StoreParams pLoc, StoreParams pDft) {
+    static StoreParams decideStoreParams(Location location, boolean isNew, StoreParams pApp, StoreParams pLoc, StoreParams pDft) {
         StoreParams p = null ;
         if ( pLoc != null ) {
             // pLoc so use it, modify by pApp.

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
index 3dd02e6..7b6e60c 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
@@ -19,16 +19,12 @@
 package com.hp.hpl.jena.tdb.setup ;
 
 import java.io.File ;
-import java.io.IOException ;
+import java.io.FileFilter ;
 import java.util.Collections ;
 import java.util.HashMap ;
 import java.util.Map ;
-import java.util.Properties ;
 
-import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.lib.ColumnMap ;
-import org.apache.jena.atlas.lib.FileOps ;
-import org.apache.jena.atlas.lib.PropertyUtils ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.slf4j.Logger ;
 
@@ -81,34 +77,50 @@ public class DatasetBuilderStd implements DatasetBuilder {
      * The parameters for a store have 3 inputs: the parameters provided,
      * any parameters 
      * 
-     * 
-     * 
-     * @param location   Where to create the database.
-     * @param params     Store parameters to use (null means use default). 
+     * @param location    Where to create the database.
+     * @param appParams   Store parameters to use (null means use default). {See {@linkplain StoreParams}). 
      * @return DatasetGraphTDB
      */
-    public static DatasetGraphTDB create(Location location, StoreParams params) {
-        StoreParams $params = paramsForLocation(location) ;
-        // ---- Experimental
-        if ( ! location.isMem() && params != null ) {
-            if ( FileOps.existsAnyFiles(location.getDirectoryPath()) )
-                $params = StoreParamsBuilder.modify($params, params) ;
-            else
-                $params = params ;
-            params = null ;
-        }
-
-        // ----
-        if ( params != null )
-            log.warn("StoreParams != null (experimental)") ;
+    public static DatasetGraphTDB create(Location location, StoreParams appParams) {
+        StoreParams locParams = StoreParamsCodec.read(location) ;
+        StoreParams dftParams = StoreParams.getDftStoreParams() ;
+        // This can write the chosen parameters if necessary (new database, appParams != null, locParams == null)
+        boolean newArea = isNewDatabaseArea(location) ;
+        StoreParams params = Build.decideStoreParams(location, newArea, appParams, locParams, dftParams) ;
         DatasetBuilderStd x = new DatasetBuilderStd() ;
         x.standardSetup() ;
-        DatasetGraphTDB dsg = x.build(location, $params) ;
-        // Write params.
-        //if ( params != StoreParams.getDftStoreParams() )
-        
+        DatasetGraphTDB dsg = x.build(location, params) ;
         return dsg ;
     }
+    
+    /** Look at a directory and see if it is a new area */
+    private static boolean isNewDatabaseArea(Location location) {
+        if ( location.isMem() )
+            return true ;
+        File d = new File(location.getDirectoryPath()) ;
+        if ( !d.exists() )
+            return true ;
+        FileFilter ff = fileFilterNewDB ;
+        File[] entries = d.listFiles(ff) ;
+        return entries.length == 0 ;
+    }
+
+    static FileFilter fileFilterNewDB  = new FileFilter() {
+        @Override
+        public boolean accept(File pathname) {
+            String fn = pathname.getName() ;
+            if ( fn.equals(".") || fn.equals("..") )
+                return false ;
+            if ( pathname.isDirectory() )
+                return true ;
+
+            if ( fn.equals(StoreParamsConst.TDB_CONFIG_FILE) )
+                return false ;
+            return true ;
+        }
+    } ;
+
+
 
     public static DatasetGraphTDB create(StoreParams params) {
         // Memory version?
@@ -147,38 +159,7 @@ public class DatasetBuilderStd implements DatasetBuilder {
         set(nodeTableBuilder, tupleIndexBuilder) ;
     }
 
-    private static StoreParams paramsForLocation(Location location) {
-        if ( location.exists(DB_CONFIG_FILE) ) {
-            log.debug("Existing configuration file found") ;
-            Properties properties = new Properties() ;
-            try { 
-                PropertyUtils.loadFromFile(properties, DB_CONFIG_FILE) ;
-            } catch (IOException ex) { IO.exception(ex) ; throw new TDBException("Bad configuration file", ex) ; }
-        }
-        return StoreParams.getDftStoreParams() ;
-    }
-
-//    private void checkIfConfig(Location location) {
-//    }
-
-    private void checkIfNew(Location location) {
-        if ( location.isMem() ) {
-            return ;
-        }
-        
-        if ( FileOps.existsAnyFiles(location.getDirectoryPath()) ) {
-            
-        }
 
-        if ( location.exists(DB_CONFIG_FILE) ) {
-            log.debug("Existing config file") ;
-            return ;
-        }
-        
-    }
-    
-    private void checkConfiguration() { } 
-    
     private static void checkLocation(Location location) { 
         if ( location.isMem() )
             return ;
@@ -200,7 +181,6 @@ public class DatasetBuilderStd implements DatasetBuilder {
         BlockMgrBuilder blockMgrBuilder = new BuilderStdIndex.BlockMgrBuilderStd() ;
         IndexBuilder indexBuilderNT = new BuilderStdIndex.IndexBuilderStd(blockMgrBuilder, blockMgrBuilder) ;
         NodeTableBuilder nodeTableBuilder = new BuilderStdDB.NodeTableBuilderStd(indexBuilderNT, objectFileBuilder) ;
-
         set(blockMgrBuilder, nodeTableBuilder) ;
     }
 
@@ -209,7 +189,6 @@ public class DatasetBuilderStd implements DatasetBuilder {
         // Ensure that there is global synchronization
         synchronized (DatasetBuilderStd.class) {
             log.debug("Build database: "+location.getDirectoryPath()) ;
-            checkIfNew(location) ;
             checkLocation(location) ;
             return _build(location, params, true, null) ;
         }
@@ -360,10 +339,10 @@ public class DatasetBuilderStd implements DatasetBuilder {
     }
     
     protected NodeTable makeNodeTableNoCache(Location location, String indexNode2Id, String indexId2Node, StoreParams params) {
-        StoreParamsBuilder spb = StoreParamsBuilder.create(params) ;
-        spb.node2NodeIdCacheSize(-1) ;
-        spb.nodeId2NodeCacheSize(-1) ;
-        spb.nodeMissCacheSize(-1) ;
+        StoreParamsBuilder spb = StoreParams.builder(params)
+            .node2NodeIdCacheSize(-1)
+            .nodeId2NodeCacheSize(-1)
+            .nodeMissCacheSize(-1) ;
         return makeNodeTable$(location, indexNode2Id, indexId2Node, spb.build()) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
index 81873dc..105e44c 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
@@ -73,6 +73,17 @@ public class StoreParams implements IndexParams, StoreParamsDynamic
     /*package*/ final Item<String>             prefixNode2Id ;
     /*package*/ final Item<String>             prefixId2Node ;
 
+    /** Build StoreParams, starting from system defaults.
+     * 
+     * @return StoreParamsBuilder
+     */
+    public static StoreParamsBuilder builder() { return StoreParamsBuilder.create() ; }
+    
+    /** Build StoreParams, starting from given default values.
+     * 
+     * @return StoreParamsBuilder
+     */
+    public static StoreParamsBuilder builder(StoreParams params) { return StoreParamsBuilder.create(params) ; }
     
     /*package*/ StoreParams(Item<FileMode> fileMode, Item<Integer> blockSize,
                             Item<Integer> blockReadCacheSize, Item<Integer> blockWriteCacheSize,

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
index 49cdd44..dbf6022 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
@@ -43,8 +43,10 @@ import java.io.FileOutputStream ;
 import java.io.IOException ;
 import java.io.OutputStream ;
 
+import org.apache.jena.atlas.AtlasException ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.json.JSON ;
+import org.apache.jena.atlas.json.JsonParseException;
 import org.apache.jena.atlas.json.JsonArray ;
 import org.apache.jena.atlas.json.JsonBuilder ;
 import org.apache.jena.atlas.json.JsonObject ;
@@ -78,10 +80,14 @@ public class StoreParamsCodec {
         return read(location.getPath(TDB_CONFIG_FILE)) ;
     }
     
-    /** Read from a file */ 
+    /** Read from a file, if possible. */ 
     public static StoreParams read(String filename) {
-        JsonObject obj = JSON.read(filename) ;
-        return StoreParamsCodec.decode(obj) ;
+        try {
+            JsonObject obj = JSON.read(filename) ;
+            return StoreParamsCodec.decode(obj) ;
+        } 
+        catch (JsonParseException ex) { return null ; }
+        catch (AtlasException ex) { return null ; }
     }
     
     public static JsonObject encodeToJson(StoreParams params) {
@@ -126,7 +132,7 @@ public class StoreParamsCodec {
     }
 
     public static StoreParams decode(JsonObject json) {
-        StoreParamsBuilder builder = StoreParamsBuilder.create() ;
+        StoreParamsBuilder builder = StoreParams.builder() ;
         
         for ( String key : json.keys() ) {
             String short_key = unkey(key) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
index a06f42b..f81dbe8 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
@@ -92,10 +92,10 @@ public class StoreParamsConst {
     // because StoreParamsBuilder uses these constants.
      
     /** The system default parameters for on-disk databases. */
-    static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ;
+    static StoreParams dftStoreParams = StoreParams.builder().build() ;
 
     /** The system default parameters for in-memory databases. */
-    static StoreParams dftMemStoreParams = StoreParamsBuilder.create()
+    static StoreParams dftMemStoreParams = StoreParams.builder()
         .fileMode(FileMode.direct)
         // Small block caches, mainly so it behaves like a direct on-disk database.  
         .blockReadCacheSize(10)
@@ -106,7 +106,7 @@ public class StoreParamsConst {
         .build() ;
     
     /** The "small store" parameters. */
-    static StoreParams smallStoreParams = StoreParamsBuilder.create()
+    static StoreParams smallStoreParams = StoreParams.builder()
         .fileMode(FileMode.direct)
         .blockReadCacheSize(100)
         .blockWriteCacheSize(100)
@@ -114,7 +114,5 @@ public class StoreParamsConst {
         .nodeId2NodeCacheSize(10000)
         .nodeMissCacheSize(100)
         .build() ;
-
-
 }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
index 64655a1..4a6164a 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java
@@ -34,17 +34,17 @@ public class TestStoreParams extends BaseTest {
     
     @Test public void store_params_02() {
         StoreParams input = StoreParams.getDftStoreParams() ;
-        StoreParams sp = StoreParamsBuilder.create(input).build() ;
+        StoreParams sp = StoreParams.builder(input).build() ;
         assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; 
     }
 
     @Test public void store_params_03() {
-        StoreParams sp = StoreParamsBuilder.create().build() ;
+        StoreParams sp = StoreParams.builder().build() ;
         assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; 
     }
 
     @Test public void store_params_04() {
-        StoreParams params = StoreParamsBuilder.create().build() ;
+        StoreParams params = StoreParams.builder().build() ;
         StoreParams params2 = roundTrip(params) ;
         assertEqualsStoreParams(params,params2) ;
     }
@@ -52,7 +52,7 @@ public class TestStoreParams extends BaseTest {
     // ----
     
     @Test public void store_params_10() {
-        StoreParams params = StoreParamsBuilder.create().fileMode(FileMode.direct).blockSize(1024).build() ;
+        StoreParams params = StoreParams.builder().fileMode(FileMode.direct).blockSize(1024).build() ;
         StoreParams params2 = roundTrip(params) ;
         assertEqualsStoreParams(params,params2) ;
         assertEquals(params.getFileMode(), params2.getFileMode()) ;
@@ -62,7 +62,7 @@ public class TestStoreParams extends BaseTest {
     @Test public void store_params_11() {
         String xs = "{ \"tdb.block_size\": 2048 }" ;
         JsonObject x = JSON.parse(xs) ;
-        StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).build() ;
+        StoreParams paramsExpected = StoreParams.builder().blockSize(2048).build() ;
         StoreParams paramsActual = StoreParamsCodec.decode(x) ;
         assertEqualsStoreParams(paramsExpected,paramsActual) ;
     }
@@ -70,7 +70,7 @@ public class TestStoreParams extends BaseTest {
     @Test public void store_params_12() {
         String xs = "{ \"tdb.file_mode\": \"direct\" , \"tdb.block_size\": 2048 }" ;
         JsonObject x = JSON.parse(xs) ;
-        StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).fileMode(FileMode.direct).build() ;
+        StoreParams paramsExpected = StoreParams.builder().blockSize(2048).fileMode(FileMode.direct).build() ;
         StoreParams paramsActual = StoreParamsCodec.decode(x) ;
         assertEqualsStoreParams(paramsExpected,paramsActual) ;
     }
@@ -95,16 +95,16 @@ public class TestStoreParams extends BaseTest {
     // Check that setting gets recorded and propagated.
 
     @Test public void store_params_20() {
-        StoreParams params = StoreParamsBuilder.create().blockReadCacheSize(0).build();
+        StoreParams params = StoreParams.builder().blockReadCacheSize(0).build();
         assertTrue(params.isSetBlockReadCacheSize()) ;
         assertFalse(params.isSetBlockWriteCacheSize()) ;
     }
     
     @Test public void store_params_21() {
-        StoreParams params1 = StoreParamsBuilder.create().blockReadCacheSize(0).build();
+        StoreParams params1 = StoreParams.builder().blockReadCacheSize(0).build();
         assertTrue(params1.isSetBlockReadCacheSize()) ;
         assertFalse(params1.isSetBlockWriteCacheSize()) ;
-        StoreParams params2 = StoreParamsBuilder.create(params1).blockWriteCacheSize(0).build();
+        StoreParams params2 = StoreParams.builder(params1).blockWriteCacheSize(0).build();
         assertTrue(params2.isSetBlockReadCacheSize()) ;
         assertTrue(params2.isSetBlockWriteCacheSize()) ;
         assertFalse(params2.isSetNodeMissCacheSize()) ;
@@ -112,11 +112,11 @@ public class TestStoreParams extends BaseTest {
 
     // Modify
     @Test public void store_params_22() {
-        StoreParams params1 = StoreParamsBuilder.create()
+        StoreParams params1 = StoreParams.builder()
             .blockReadCacheSize(0)
             .blockWriteCacheSize(1)
             .build();
-        StoreParams params2 = StoreParamsBuilder.create()
+        StoreParams params2 = StoreParams.builder()
             .blockReadCacheSize(5)
             .build();
         StoreParams params3 = StoreParamsBuilder.modify(params1, params2) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
index fb50f33..8e985ae 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java
@@ -27,38 +27,38 @@ import com.hp.hpl.jena.tdb.base.file.Location ;
 //TestParamsCreate
 /** This test suite uses on-diskstructures and can be slow */ 
 public class TestStoreParamsChoose extends BaseTest {
-    static final StoreParams pApp = StoreParamsBuilder.create()
+    static final StoreParams pApp = StoreParams.builder()
         .blockSize(12)              // Not dynamic
         .nodeMissCacheSize(12)      // Dynamic
         .build();
-    static final StoreParams pLoc = StoreParamsBuilder.create()
+    static final StoreParams pLoc = StoreParams.builder()
         .blockSize(0)
         .nodeMissCacheSize(0).build();
     
     static final StoreParams pDft = StoreParams.getDftStoreParams() ;
 
     @Test public void params_choose_new_1() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), true, null, null, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), true, null, null, pDft) ;
         // New store, no pLoc, no pApp so pDft.
         assertTrue(StoreParams.sameValues(p, pDft)) ;
     }
     
     @Test public void params_choose_new_2() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, null, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), true, pApp, null, pDft) ;
         // New store, no pLoc, so pApp is the enire settings.
         assertEquals(12, p.getBlockSize().intValue()) ;
         assertTrue(StoreParams.sameValues(p, pApp)) ;
     }
 
     @Test public void params_choose_new_3() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), true, null, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), true, null, pLoc, pDft) ;
         // New store, pLoc, no pApp, so pLoc is the entire settings.
         assertEquals(0, p.getBlockSize().intValue()) ;
         assertTrue(StoreParams.sameValues(p, pLoc)) ;
     }
 
     @Test public void params_choose_new_4() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), true, pApp, pLoc, pDft) ;
         // New store, pLoc, no pApp, so pLoc is the entire settings.
         
         assertFalse(StoreParams.sameValues(p, pApp)) ;
@@ -70,13 +70,13 @@ public class TestStoreParamsChoose extends BaseTest {
     }
 
     @Test public void params_choose_existing_1() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), false, null, null, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), false, null, null, pDft) ;
         // p is pDft.
         assertTrue(StoreParams.sameValues(p, pDft)) ;
     }
 
     @Test public void params_choose_existing_2() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, null, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), false, pApp, null, pDft) ;
         // p is pLoc modified by pApp
         assertFalse(StoreParams.sameValues(p, pApp)) ;
         assertFalse(StoreParams.sameValues(p, pDft)) ;
@@ -86,14 +86,14 @@ public class TestStoreParamsChoose extends BaseTest {
     }
     
     @Test public void params_choose_existing_3() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), false, null, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), false, null, pLoc, pDft) ;
         // p is pLoc
         assertTrue(StoreParams.sameValues(p, pLoc)) ;
         
     }
 
     @Test public void params_choose_existing_4() {
-        StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(Location.mem(), false, pApp, pLoc, pDft) ;
         // p is pLoc modifed by pApp.
         assertFalse(StoreParams.sameValues(p, pApp)) ;
         assertFalse(StoreParams.sameValues(p, pLoc)) ;
@@ -108,7 +108,7 @@ public class TestStoreParamsChoose extends BaseTest {
         Location loc = Location.create("target/test/DB") ;
         FileOps.clearAll(loc.getDirectoryPath());
         // Clear.
-        StoreParams p = Build.fixStoreParams(loc, true, pApp, null, pDft) ;
+        StoreParams p = Build.decideStoreParams(loc, true, pApp, null, pDft) ;
         // Check location now has a pLoc.
         String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
         assertTrue(FileOps.exists(fn)) ;
@@ -124,7 +124,7 @@ public class TestStoreParamsChoose extends BaseTest {
         StoreParamsCodec.write(loc, pLoc); 
         
         // Clear.
-        StoreParams p = Build.fixStoreParams(loc, true, null, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(loc, true, null, pLoc, pDft) ;
         // Check location still has a pLoc.
         String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
         assertTrue(FileOps.exists(fn)) ;
@@ -140,7 +140,7 @@ public class TestStoreParamsChoose extends BaseTest {
         StoreParamsCodec.write(loc, pLoc); 
         
         // Clear.
-        StoreParams p = Build.fixStoreParams(loc, true, pApp, pLoc, pDft) ;
+        StoreParams p = Build.decideStoreParams(loc, true, pApp, pLoc, pDft) ;
         // Check location still has a pLoc.
         String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ;
         assertTrue(FileOps.exists(fn)) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
index 55c0d3f..337140b 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java
@@ -20,9 +20,6 @@ package com.hp.hpl.jena.tdb.setup;
 
 import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.TDB_CONFIG_FILE ;
 
-import java.io.File ;
-import java.io.FileOutputStream ;
-import java.io.IOException ;
 import java.nio.file.Files ;
 import java.nio.file.Path ;
 import java.nio.file.Paths ;
@@ -35,45 +32,136 @@ import org.junit.After ;
 import org.junit.Before ;
 import org.junit.Test ;
 
+import com.hp.hpl.jena.tdb.ConfigTest ;
 import com.hp.hpl.jena.tdb.StoreConnection ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
-import com.hp.hpl.jena.tdb.setup.StoreParams ;
-import com.hp.hpl.jena.tdb.setup.StoreParamsCodec ;
 
-//TestParamsCreate
-/** This test suite uses on-diskstructures and can be slow */ 
+/**
+ * This test suite uses on-disk structures, does a lot of clean/create/sync
+ * calls and can be noticably slow.
+ */
 public class TestStoreParamsCreate extends BaseTest {
-    static String DB_DIR = "target/test/DB" ; 
+    private final String DB_DIR = ConfigTest.getCleanDir() ;
+    private final Path db = Paths.get(DB_DIR) ;
+    private final Path cfg = Paths.get(DB_DIR, TDB_CONFIG_FILE) ;
+    private final Location loc = Location.create(DB_DIR) ;
+    
+    static final StoreParams pApp = StoreParams.getSmallStoreParams() ; 
+    static final StoreParams pDft = StoreParams.getDftStoreParams() ;
+    static final StoreParams pSpecial = StoreParams.builder(pApp)
+        .blockSize(1024)
+        .blockReadCacheSize(4)
+        .build();
     
-    @Before public void clearAnyDatabase() {
-        FileOps.clearAll(new File(DB_DIR)); 
+    @Before public void clearupTest() { 
+        // Flush and clean.
+        StoreConnection.expel(loc, true) ;
+        FileOps.clearAll(DB_DIR);
     }
 
-    @After public void clearupTest() {}
-
+    @After public void expelDatabase() { 
+        StoreConnection.expel(loc, true) ;
+    }
     
     @Test public void params_create_01() {
-        Location loc = Location.create(DB_DIR) ;
         StoreConnection.make(loc, null) ;
-        Path db = Paths.get(DB_DIR) ;
+        // Check.  Default setup, no params.
+        assertTrue("DB directory", Files.exists(db)) ;
+        assertFalse("Config file unexpectedly found", Files.exists(cfg)) ;
+    }
+    
+    @Test public void params_create_02() {
+        StoreConnection.make(loc, pApp) ;
+        // Check.  Custom setup.
         assertTrue("DB directory", Files.exists(db)) ;
-        Path dbCfg = db.resolve(TDB_CONFIG_FILE) ;
-        // Fake it.
-        try {
-            new FileOutputStream(dbCfg.toFile()).close();
-        }
-        catch (IOException e) {
-            e.printStackTrace();
-        }
+        assertTrue("Config file not found", Files.exists(cfg)) ;
+        StoreParams pLoc = StoreParamsCodec.read(loc) ;
+        assertTrue(StoreParams.sameValues(pLoc, pApp)) ;
+    }
+    
+    // Defaults
+    @Test public void params_reconnect_01() { 
+        // Create.
+        StoreConnection.make(loc, null) ;
+        // Drop.
+        StoreConnection.expel(loc, true) ;
+        // Reconnect
+        StoreConnection.make(loc, null) ;
+        StoreParams pLoc = StoreParamsCodec.read(loc) ;
+        assertNull(pLoc) ;
         
+        StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ;
+        assertNotNull(pDB) ;
+        // Should be the default setup.
+        assertTrue(StoreParams.sameValues(pDft, pDB)) ;
+    }
+    
+    // Defaults, then reconnect with app modified.
+    @Test public void params_reconnect_02() { 
+        // Create.
+        StoreConnection.make(loc, null) ;
+        // Drop.
+        StoreConnection.expel(loc, true) ;
+        // Reconnect
+        StoreConnection.make(loc, pSpecial) ;
+        //StoreParams pLoc = StoreParamsCodec.read(loc) ;
+        //assertNotNull(pLoc) ;
         
-        assertTrue("DB config file", Files.exists(dbCfg)) ;
+        StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ;
+        assertNotNull(pDB) ;
+        // Should be the default setup, modified by pApp for cache sizes.
+        assertFalse(StoreParams.sameValues(pDft, pDB)) ;
+        assertFalse(StoreParams.sameValues(pSpecial, pDB)) ;
+
+        // Check it's default-modified-by-special.
+        assertEquals(pSpecial.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ;
+        assertNotEquals(pDft.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ;
         
+        assertNotEquals(pSpecial.getBlockSize(), pDB.getBlockSize()) ;
+        assertEquals(pDft.getBlockSize(), pDB.getBlockSize()) ;
     }
     
-    // Create store.
-    // Test params.
+    // Custom, then reconnect with some special settings.
+    @Test public void params_reconnect_03() { 
+        // Create.
+        StoreConnection.make(loc, pApp) ;
+        // Drop.
+        StoreConnection.expel(loc, true) ;
+        // Reconnect
+        StoreConnection.make(loc, pSpecial) ;
+        //StoreParams pLoc = StoreParamsCodec.read(loc) ;
+        //assertNotNull(pLoc) ;
+        
+        StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ;
+        assertNotNull(pDB) ;
+        // Should be the default setup, modified by pApp for cache sizes.
+        assertFalse(StoreParams.sameValues(pApp, pDB)) ;
+        assertFalse(StoreParams.sameValues(pSpecial, pDB)) ;
+
+        // Check it's default-modified-by-special.
+        assertEquals(pSpecial.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ;
+        assertNotEquals(pApp.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ;
+        
+        assertNotEquals(pSpecial.getBlockSize(), pDB.getBlockSize()) ;
+        assertEquals(pApp.getBlockSize(), pDB.getBlockSize()) ;
+    }
+
     
+//    // Custom then modified.
+//    @Test public void params_reconnect_03() { 
+//        // Create.
+//        StoreConnection.make(loc, pLoc) ;
+//        // Drop.
+//        StoreConnection.expel(loc, true) ;
+//        // Reconnect
+//        StoreConnection.make(loc, pApp) ;
+//        StoreParams pLoc = StoreParamsCodec.read(loc) ;
+//        assertFalse(StoreParams.sameValues(pApp, pLoc)) ;
+//        assertFalse(StoreParams.sameValues(pApp, pLoc)) ;
+//    }
+
+    // Dataset tests
+
     static StoreParams read(Location location) {
         String fn = location.getPath(TDB_CONFIG_FILE) ;
         JsonObject obj = JSON.read(fn) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
index 0b0ed5b..c5d770f 100644
--- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
+++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java
@@ -71,7 +71,7 @@ public class TestTransRestart extends BaseTest {
         cleanup() ;
     }
     
-    private static DatasetGraphTDB createPlain(Location location) { return TDBMaker.createDatasetGraphTDB(location) ; }
+    private static DatasetGraphTDB createPlain(Location location) { return TDBMaker.createDatasetGraphTDB(location, null) ; }
     
     private void setupPlain() {
         // Make without transactions.


[02/13] jena git commit: Add StoreParams arguiments to many methods. Separate out StoreParamsConst.

Posted by an...@apache.org.
Add StoreParams arguiments to many methods.
Separate out StoreParamsConst.


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

Branch: refs/heads/master
Commit: 463de5f0451c397084bb1af2e9e4d3c17ac67c37
Parents: 140a088
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Nov 5 13:43:35 2014 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Nov 5 15:06:44 2014 +0000

----------------------------------------------------------------------
 .../com/hp/hpl/jena/tdb/StoreConnection.java    | 22 +++--
 .../java/com/hp/hpl/jena/tdb/TDBFactory.java    |  6 +-
 .../hpl/jena/tdb/setup/DatasetBuilderStd.java   | 12 ++-
 .../hpl/jena/tdb/setup/StoreParamsBuilder.java  | 59 +++++--------
 .../hp/hpl/jena/tdb/setup/StoreParamsCodec.java |  2 +-
 .../hp/hpl/jena/tdb/setup/StoreParamsConst.java | 87 ++++++++++++++++++++
 6 files changed, 134 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
index 3683a29..91b333e 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java
@@ -27,10 +27,11 @@ import com.hp.hpl.jena.query.ReadWrite ;
 import com.hp.hpl.jena.sparql.mgt.ARQMgt ;
 import com.hp.hpl.jena.tdb.base.file.ChannelManager ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
-import com.hp.hpl.jena.tdb.base.file.LocationLock;
+import com.hp.hpl.jena.tdb.base.file.LocationLock ;
 import com.hp.hpl.jena.tdb.setup.DatasetBuilderStd ;
+import com.hp.hpl.jena.tdb.setup.StoreParams ;
 import com.hp.hpl.jena.tdb.store.DatasetGraphTDB ;
-import com.hp.hpl.jena.tdb.sys.SystemTDB;
+import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 import com.hp.hpl.jena.tdb.transaction.* ;
 
 /** A StoreConnection is the reference to the underlying storage.
@@ -166,10 +167,10 @@ public class StoreConnection
     private static Map<Location, StoreConnection> cache = new HashMap<>() ;
 
     // ---- statics managing the cache.
-    /** Obtain a StoreConenction for a particular location */
+    /** Obtain a StoreConnection for a particular location */
     public static StoreConnection make(String location)
     {
-        return make(new Location(location)) ;
+        return make(Location.create(location)) ;
     }
 
     /** Stop managing all locations. Use with great care. */
@@ -219,17 +220,22 @@ public class StoreConnection
      * Return a StoreConnection for a particular connection. This is used to
      * create transactions for the database at the location.
      */
-    public static synchronized StoreConnection make(Location location)
+    public static synchronized StoreConnection make(Location location, StoreParams params)
     {
         StoreConnection sConn = cache.get(location) ;
         if (sConn != null) 
             return sConn ;
-        DatasetGraphTDB dsg = DatasetBuilderStd.create(location) ;
+        DatasetGraphTDB dsg = DatasetBuilderStd.create(location, params) ;
         sConn = _makeAndCache(dsg) ;
         return sConn ;
     }
 
-    /**
+    @Deprecated
+    public static StoreConnection make(Location location) {
+        return make(location, null) ;
+    }
+
+                                                    /**
      * Return the StoreConnection if one already exists for this location, else
      * return null
      */
@@ -292,7 +298,7 @@ public class StoreConnection
      */
     public static StoreConnection createMemUncached()
     {
-        DatasetGraphTDB dsg = DatasetBuilderStd.create(Location.mem()) ;
+        DatasetGraphTDB dsg = DatasetBuilderStd.create(Location.mem(), null) ;
         return new StoreConnection(dsg) ;
     }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
index 5f2610e..9a01cae 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/TDBFactory.java
@@ -45,7 +45,7 @@ public class TDBFactory
     
     /** Create or connect to a TDB-backed dataset */ 
     public static Dataset createDataset(String dir)
-    { return createDataset(new Location(dir)) ; }
+    { return createDataset(Location.create(dir)) ; }
 
     /** Create or connect to a TDB-backed dataset */ 
     public static Dataset createDataset(Location location)
@@ -66,7 +66,7 @@ public class TDBFactory
 
     /** Create or connect to a TDB-backed dataset (graph-level) */
     public static DatasetGraph createDatasetGraph(String directory)
-    { return createDatasetGraph(new Location(directory)) ; }
+    { return createDatasetGraph(Location.create(directory)) ; }
 
     /** Create or connect to a TDB-backed dataset (graph-level) */
     public static DatasetGraph createDatasetGraph(Location location)
@@ -232,7 +232,7 @@ public class TDBFactory
     @Deprecated
     public static Graph createGraph(String dir)
     {
-        Location loc = new Location(dir) ;
+        Location loc = Location.create(dir) ;
         return createGraph(loc) ;
     }
     

http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
index 3a01f60..ae903ca 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java
@@ -67,15 +67,23 @@ public class DatasetBuilderStd implements DatasetBuilder {
     private TupleIndexBuilder   tupleIndexBuilder ;
     private Recorder            recorder = null ;   
     
+    @Deprecated
     public static DatasetGraphTDB create(Location location) {
+        return create(location, null) ;
+    }
+    
+    public static DatasetGraphTDB create(Location location, StoreParams $params) {
+        if ( $params != null )
+            log.warn("StoreParams != null (ignored)") ;
         StoreParams params = paramsForLocation(location) ;
         DatasetBuilderStd x = new DatasetBuilderStd() ;
         x.standardSetup() ;
         return x.build(location, params) ;
     }
 
-    public static DatasetGraphTDB create() {
-        return create(Location.mem()) ;
+    public static DatasetGraphTDB create(StoreParams params) {
+        // Memory version?
+        return create(Location.mem(), params) ;
     }
 
     public static DatasetBuilderStd stdBuilder() {

http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
index 806fd13..0fa5d42 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsBuilder.java
@@ -19,70 +19,49 @@
 package com.hp.hpl.jena.tdb.setup;
 
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
-import com.hp.hpl.jena.tdb.sys.Names ;
-import com.hp.hpl.jena.tdb.sys.SystemTDB ;
 
 public class StoreParamsBuilder {
-    // Initial values are the system defaults.
-    
+    // See also StoreParamsConst.
     /** Database and query configuration */ 
     // Key names are the base name -  encode/decode may add a prefix.
     
-    public static final String fFileMode             = "file_mode" ;
-    private FileMode           fileMode              = SystemTDB.fileMode() ;
+    private FileMode           fileMode              = StoreParamsConst.fileMode ;
 
-    public static final String fBlockReadCacheSize   = "block_read_cache_size" ;
-    private int                blockReadCacheSize    = SystemTDB.BlockReadCacheSize ;
+    private int                blockReadCacheSize    = StoreParamsConst.blockReadCacheSize ;
 
-    public static final String fBlockWriteCacheSize  = "block_write_cache_size" ;
-    private int                blockWriteCacheSize   = SystemTDB.BlockWriteCacheSize ;
+    private int                blockWriteCacheSize   = StoreParamsConst.blockWriteCacheSize ;
 
-    public static final String fNode2NodeIdCacheSize = "node2nodeid_cache_size" ;
-    private int                Node2NodeIdCacheSize  = SystemTDB.Node2NodeIdCacheSize ;
+    private int                Node2NodeIdCacheSize  = StoreParamsConst.Node2NodeIdCacheSize ;
 
-    public static final String fNodeId2NodeCacheSize = "nodeid2node_cache_size" ;
-    private int                NodeId2NodeCacheSize  = SystemTDB.NodeId2NodeCacheSize ;
+    private int                NodeId2NodeCacheSize  = StoreParamsConst.NodeId2NodeCacheSize ;
 
-    public static final String fNodeMissCacheSize    = "node_miss_cache_size" ;
-    private int                NodeMissCacheSize     = SystemTDB.NodeMissCacheSize ;
+    private int                NodeMissCacheSize     = StoreParamsConst.NodeMissCacheSize ;
 
     /** Database layout - ignored after a database is created */
 
-    public static final String fBlockSize            = "block_size" ;
-    private int                blockSize             = SystemTDB.BlockSize ;
+    private int                blockSize             = StoreParamsConst.blockSize ;
 
-    public static final String fIndexNode2Id         = "index_node2id" ;
-    private String             indexNode2Id          = Names.indexNode2Id ;
+    private String             indexNode2Id          = StoreParamsConst.indexNode2Id ;
 
-    public static final String fIndexId2Node         = "index_id2node" ;
-    private String             indexId2Node          = Names.indexId2Node ;
+    private String             indexId2Node          = StoreParamsConst.indexId2Node ;
 
-    public static final String fPrimaryIndexTriples  = "triple_index_primary" ;
-    private String             primaryIndexTriples   = Names.primaryIndexTriples ;
+    private String             primaryIndexTriples   = StoreParamsConst.primaryIndexTriples ;
 
-    public static final String fTripleIndexes        = "triple_indexes" ;
-    private String[]           tripleIndexes         = Names.tripleIndexes ;
+    private String[]           tripleIndexes         = StoreParamsConst.tripleIndexes ;
 
-    public static final String fPrimaryIndexQuads    = "quad_index_primary" ;
-    private String             primaryIndexQuads     = Names.primaryIndexQuads ;
+    private String             primaryIndexQuads     = StoreParamsConst.primaryIndexQuads ;
 
-    public static final String fQuadIndexes          = "quad_indexes" ;
-    private String[]           quadIndexes           = Names.quadIndexes ;
+    private String[]           quadIndexes           = StoreParamsConst.quadIndexes ;
 
-    public static final String fPrimaryIndexPrefix   = "prefix_index_primary" ;
-    private String             primaryIndexPrefix    = Names.primaryIndexPrefix ;
+    private String             primaryIndexPrefix    = StoreParamsConst.primaryIndexPrefix ;
 
-    public static final String fPrefixIndexes        = "prefix_indexes" ;
-    private String[]           prefixIndexes         = Names.prefixIndexes ;
+    private String[]           prefixIndexes         = StoreParamsConst.prefixIndexes ;
 
-    public static final String fIndexPrefix          = "file_prefix_index" ;
-    private String             indexPrefix           = Names.indexPrefix ;
+    private String             indexPrefix           = StoreParamsConst.indexPrefix ;
 
-    public static final String fPrefixNode2Id        = "file_prefix_nodeid" ;
-    private String             prefixNode2Id         = Names.prefixNode2Id ;
+    private String             prefixNode2Id         = StoreParamsConst.prefixNode2Id ;
 
-    public static final String fPrefixId2Node        = "file_prefix_id2node" ;
-    private String             prefixId2Node         = Names.prefixId2Node ;
+    private String             prefixId2Node         = StoreParamsConst.prefixId2Node ;
 
     public static StoreParamsBuilder create() { return new StoreParamsBuilder() ; }
 

http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
index b4781c4..93a8ea2 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java
@@ -26,7 +26,7 @@ import com.hp.hpl.jena.sparql.util.Utils ;
 import com.hp.hpl.jena.tdb.TDBException ;
 import com.hp.hpl.jena.tdb.base.block.FileMode ;
 
-import static com.hp.hpl.jena.tdb.setup.StoreParamsBuilder.* ;
+import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.* ;
 
 /** Encode and decode {@linkplain StoreParams} */ 
 public class StoreParamsCodec {

http://git-wip-us.apache.org/repos/asf/jena/blob/463de5f0/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
----------------------------------------------------------------------
diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
new file mode 100644
index 0000000..7f10450
--- /dev/null
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java
@@ -0,0 +1,87 @@
+/**
+ * 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 com.hp.hpl.jena.tdb.setup;
+
+import com.hp.hpl.jena.tdb.base.block.FileMode ;
+import com.hp.hpl.jena.tdb.sys.Names ;
+import com.hp.hpl.jena.tdb.sys.SystemTDB ;
+
+public class StoreParamsConst {
+    // Initial values are the system defaults.
+    
+    /** Database and query configuration */ 
+    // Key names are the base name -  encode/decode may add a prefix.
+    
+    public static final String   fFileMode             = "file_mode" ;
+    public static final FileMode fileMode              = SystemTDB.fileMode() ;
+    
+    public static final String   fBlockReadCacheSize   = "block_read_cache_size" ;
+    public static final int      blockReadCacheSize    = SystemTDB.BlockReadCacheSize ;
+    
+    public static final String   fBlockWriteCacheSize  = "block_write_cache_size" ;
+    public static final int      blockWriteCacheSize   = SystemTDB.BlockWriteCacheSize ;
+    
+    public static final String   fNode2NodeIdCacheSize = "node2nodeid_cache_size" ;
+    public static final int      Node2NodeIdCacheSize  = SystemTDB.Node2NodeIdCacheSize ;
+    
+    public static final String   fNodeId2NodeCacheSize = "nodeid2node_cache_size" ;
+    public static final int      NodeId2NodeCacheSize  = SystemTDB.NodeId2NodeCacheSize ;
+    
+    public static final String   fNodeMissCacheSize    = "node_miss_cache_size" ;
+    public static final int      NodeMissCacheSize     = SystemTDB.NodeMissCacheSize ;
+    
+    /** Database layout - ignored after a database is created */
+    public static final String   fBlockSize            = "block_size" ;
+    public static final int      blockSize             = SystemTDB.BlockSize ;
+    
+    public static final String   fIndexNode2Id         = "index_node2id" ;
+    public static final String   indexNode2Id          = Names.indexNode2Id ;
+    
+    public static final String   fIndexId2Node         = "index_id2node" ;
+    public static final String   indexId2Node          = Names.indexId2Node ;
+    
+    public static final String   fPrimaryIndexTriples  = "triple_index_primary" ;
+    public static final String   primaryIndexTriples   = Names.primaryIndexTriples ;
+    
+    public static final String   fTripleIndexes        = "triple_indexes" ;
+    public static final String[] tripleIndexes         = Names.tripleIndexes ;
+    
+    public static final String   fPrimaryIndexQuads    = "quad_index_primary" ;
+    public static final String   primaryIndexQuads     = Names.primaryIndexQuads ;
+    
+    public static final String   fQuadIndexes          = "quad_indexes" ;
+    public static final String[] quadIndexes           = Names.quadIndexes ;
+    
+    public static final String   fPrimaryIndexPrefix   = "prefix_index_primary" ;
+    public static final String   primaryIndexPrefix    = Names.primaryIndexPrefix ;
+    
+    public static final String   fPrefixIndexes        = "prefix_indexes" ;
+    public static final String[] prefixIndexes         = Names.prefixIndexes ;
+    
+    public static final String   fIndexPrefix          = "file_prefix_index" ;
+    public static final String   indexPrefix           = Names.indexPrefix ;
+    
+    public static final String   fPrefixNode2Id        = "file_prefix_nodeid" ;
+    public static final String   prefixNode2Id         = Names.prefixNode2Id ;
+    
+    public static final String   fPrefixId2Node        = "file_prefix_id2node" ;
+    public static final String   prefixId2Node         = Names.prefixId2Node ;
+    
+}
+