Configuration utils to FusekiEnv.

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

Branch: refs/heads/master
Commit: 7e9a76e11ed9f86e8146cf4606e3fe20e550a913
Parents: 5d3f29c
Author: Andy Seaborne <[email protected]>
Authored: Fri Jul 31 14:10:53 2015 +0100
Committer: Andy Seaborne <[email protected]>
Committed: Fri Jul 31 14:10:53 2015 +0100

----------------------------------------------------------------------
 .../apache/jena/fuseki/mgt/ActionDatasets.java  | 55 ++------------------
 .../apache/jena/fuseki/server/FusekiEnv.java    | 53 ++++++++++++++++++-
 2 files changed, 55 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/7e9a76e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
index 7a972d9..4f53269 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
@@ -24,9 +24,6 @@ import java.io.IOException ;
 import java.io.InputStream ;
 import java.io.OutputStream ;
 import java.io.StringReader ;
-import java.nio.file.DirectoryStream ;
-import java.nio.file.Files ;
-import java.nio.file.Path ;
 import java.util.* ;
 
 import javax.servlet.ServletOutputStream ;
@@ -173,8 +170,8 @@ public class ActionDatasets extends ActionContainerItem {
                 // And abort.
                 ServletOps.error(HttpSC.CONFLICT_409, "Name already registered 
"+datasetPath) ;
             
-            configFile = generateConfigurationFilename(datasetPath) ;
-            List<String> existing = existingConfigurationFile(datasetPath) ;
+            configFile = FusekiEnv.generateConfigurationFilename(datasetPath) ;
+            List<String> existing = 
FusekiEnv.existingConfigurationFile(datasetPath) ;
             if ( ! existing.isEmpty() )
                 ServletOps.error(HttpSC.CONFLICT_409, "Configuration file for 
"+datasetPath+" already exists") ;
 
@@ -323,7 +320,7 @@ public class ActionDatasets extends ActionContainerItem {
             DataAccessPointRegistry.get().remove(name) ;
             // Delete configuration file.
             // Should be only one, undo damage if multiple.
-            
existingConfigurationFile(name).stream().forEach(FileOps::deleteSilent);
+            
FusekiEnv.existingConfigurationFile(name).stream().forEach(FileOps::deleteSilent);
             
             // Find graph associated with this dataset name.
             // (Statically configured databases aren't in the system database.)
@@ -400,53 +397,7 @@ public class ActionDatasets extends ActionContainerItem {
         return stmt ;
     }
     
-    /** Dataset set name to configuration file name. */
-    private String datasetNameToConfigurationFile(HttpAction action, String 
dsName) {
-        List<String> existing = existingConfigurationFile(dsName) ;
-        if ( ! existing.isEmpty() ) {
-            if ( existing.size() > 1 ) {
-                action.log.warn(format("[%d] Multiple existing configuration 
files for %s : %s",
-                                       action.id, dsName, existing));
-                ServletOps.errorBadRequest("Multiple existing configuration 
files for "+dsName);
-                return null ;
-            }
-            return existing.get(0) ;
-        }
-        
-        return generateConfigurationFilename(dsName) ;
-    }
     
-        
-    // TODO To a library place and use for all ref->filename
-    private String generateConfigurationFilename(String dsName) {
-        String filename = dsName ;
-        // Without "/"
-        if ( filename.startsWith("/"))
-            filename = filename.substring(1) ;
-        filename = 
FusekiServer.dirConfiguration.resolve(filename).toString()+".ttl" ;
-        return filename ;
-    }
-    
-    /** Return the filenames of all matching files in the configuration 
directory */  
-    private List<String> existingConfigurationFile(String baseFilename) {
-        // TODO To a library place and use for all ref->filename
-        try { 
-            // Basename glob.
-            List<String> paths = new ArrayList<>() ;
-
-            try (DirectoryStream<Path> stream = 
Files.newDirectoryStream(FusekiServer.dirConfiguration, baseFilename+"*") ) {
-                stream.forEach((p)-> paths.add(p.getFileName().toString())) ;
-            }
-//            DirectoryStream.Filter<Path> matchingFiles = (entry) -> {
-//                String fn = entry.getFileName().toString() ;
-//                return fn.startsWith(baseFilename) ;
-//            } ;
-//            try (DirectoryStream<Path> stream = 
Files.newDirectoryStream(FusekiServer.dirConfiguration, matchingFiles)) {
-            return paths ;
-        } catch (IOException ex) {
-            throw new InternalErrorException("Failed to read configuration 
directory "+FusekiServer.dirConfiguration) ;
-        }
-    }
     
     // XXX Merge with Upload.incomingData
     

http://git-wip-us.apache.org/repos/asf/jena/blob/7e9a76e1/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
----------------------------------------------------------------------
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
index c5e269d..603fbe7 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/server/FusekiEnv.java
@@ -18,8 +18,19 @@
 
 package org.apache.jena.fuseki.server;
 
+import static java.lang.String.format ;
+
+import java.io.IOException ;
+import java.nio.file.DirectoryStream ;
+import java.nio.file.Files ;
 import java.nio.file.Path ;
 import java.nio.file.Paths ;
+import java.util.ArrayList ;
+import java.util.List ;
+
+import org.apache.jena.atlas.lib.InternalErrorException ;
+import org.apache.jena.fuseki.servlets.HttpAction ;
+import org.apache.jena.fuseki.servlets.ServletOps ;
 
 /** 
  * Separate initialization for FUSEKI_HOME and FUSEKI_BASE so that 
@@ -93,8 +104,9 @@ public class FusekiEnv {
     }
  
     public static final String   ENV_runArea     = "run" ;
-
     private static boolean       initialized     = false ;
+    
+    /** Initialize the server */
     public static synchronized void setEnvironment() {
         if ( initialized )
             return ;
@@ -160,5 +172,44 @@ public class FusekiEnv {
         return x ;
     }
 
+    /** Dataset set name to configuration file name. */
+    public static String datasetNameToConfigurationFile(HttpAction action, 
String dsName) {
+        List<String> existing = existingConfigurationFile(dsName) ;
+        if ( ! existing.isEmpty() ) {
+            if ( existing.size() > 1 ) {
+                action.log.warn(format("[%d] Multiple existing configuration 
files for %s : %s",
+                                       action.id, dsName, existing));
+                ServletOps.errorBadRequest("Multiple existing configuration 
files for "+dsName);
+                return null ;
+            }
+            return existing.get(0) ;
+        }
+        
+        return generateConfigurationFilename(dsName) ;
+    }
+
+    /** Choose a configuration file name - existign one or ".ttl" form if new 
*/
+    public static String generateConfigurationFilename(String dsName) {
+        String filename = dsName ;
+        // Without "/"
+        if ( filename.startsWith("/"))
+            filename = filename.substring(1) ;
+        filename = 
FusekiServer.dirConfiguration.resolve(filename).toString()+".ttl" ;
+        return filename ;
+    }
+
+    /** Return the filenames of all matching files in the configuration 
directory */  
+    public static List<String> existingConfigurationFile(String baseFilename) {
+        try { 
+            List<String> paths = new ArrayList<>() ;
+            try (DirectoryStream<Path> stream = 
Files.newDirectoryStream(FusekiServer.dirConfiguration, baseFilename+"*") ) {
+                stream.forEach((p)-> paths.add(p.getFileName().toString())) ;
+            }
+            return paths ;
+        } catch (IOException ex) {
+            throw new InternalErrorException("Failed to read configuration 
directory "+FusekiServer.dirConfiguration) ;
+        }
+    }
+
 }
 

Reply via email to