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:19:31 UTC

[1/2] jena git commit: Better exceptions from JSON parsing.

Repository: jena
Updated Branches:
  refs/heads/tdb-store-params ac8a7d9f0 -> 0bf297734


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/tdb-store-params
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 ;
         }
     }


[2/2] 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/tdb-store-params
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.