Author: andy
Date: Mon Dec  2 16:39:26 2013
New Revision: 1547092

URL: http://svn.apache.org/r1547092
Log:
Change status of datasets :: uninitialized -> active <-> dormant -> 
closing(deleting)

Added:
    jena/branches/jena-fuseki-new-ui/ds-active   (with props)
    jena/branches/jena-fuseki-new-ui/ds-add   (with props)
    jena/branches/jena-fuseki-new-ui/ds-delete   (with props)
    jena/branches/jena-fuseki-new-ui/ds-dormant   (with props)
    jena/branches/jena-fuseki-new-ui/ds-get
      - copied unchanged from r1546818, jena/branches/jena-fuseki-new-ui/get-ds
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetStatus.java
Removed:
    jena/branches/jena-fuseki-new-ui/get-ds
    jena/branches/jena-fuseki-new-ui/post-ds
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java
Modified:
    jena/branches/jena-fuseki-new-ui/src-dev/dev/DevFuseki.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsServlet.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
    
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java

Added: jena/branches/jena-fuseki-new-ui/ds-active
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-active?rev=1547092&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-active (added)
+++ jena/branches/jena-fuseki-new-ui/ds-active Mon Dec  2 16:39:26 2013
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+curl -XPOST 'http://localhost:3030/$/datasets/NEW?status=active'
\ No newline at end of file

Propchange: jena/branches/jena-fuseki-new-ui/ds-active
------------------------------------------------------------------------------
    svn:executable = *

Added: jena/branches/jena-fuseki-new-ui/ds-add
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-add?rev=1547092&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-add (added)
+++ jena/branches/jena-fuseki-new-ui/ds-add Mon Dec  2 16:39:26 2013
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+curl --data-binary @config2.ttl --header 'Content-type: text/turtle' \
+     'http://localhost:3030/$/datasets'
\ No newline at end of file

Propchange: jena/branches/jena-fuseki-new-ui/ds-add
------------------------------------------------------------------------------
    svn:executable = *

Added: jena/branches/jena-fuseki-new-ui/ds-delete
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-delete?rev=1547092&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-delete (added)
+++ jena/branches/jena-fuseki-new-ui/ds-delete Mon Dec  2 16:39:26 2013
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+curl -XDELETE 'http://localhost:3030/$/datasets/NEW'
\ No newline at end of file

Propchange: jena/branches/jena-fuseki-new-ui/ds-delete
------------------------------------------------------------------------------
    svn:executable = *

Added: jena/branches/jena-fuseki-new-ui/ds-dormant
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/ds-dormant?rev=1547092&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/ds-dormant (added)
+++ jena/branches/jena-fuseki-new-ui/ds-dormant Mon Dec  2 16:39:26 2013
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+curl -XPOST 'http://localhost:3030/$/datasets/NEW?status=dormant'
\ No newline at end of file

Propchange: jena/branches/jena-fuseki-new-ui/ds-dormant
------------------------------------------------------------------------------
    svn:executable = *

Modified: jena/branches/jena-fuseki-new-ui/src-dev/dev/DevFuseki.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src-dev/dev/DevFuseki.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src-dev/dev/DevFuseki.java (original)
+++ jena/branches/jena-fuseki-new-ui/src-dev/dev/DevFuseki.java Mon Dec  2 
16:39:26 2013
@@ -85,7 +85,7 @@ public class DevFuseki
 
         Resource service = services.get(0) ;
         DatasetRef sd = FusekiConfig.processService(service) ;
-        sd.init() ;
+        sd.activate() ;
         System.out.println("DONE");
     }
 

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsServlet.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsServlet.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsServlet.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsServlet.java
 Mon Dec  2 16:39:26 2013
@@ -18,9 +18,14 @@
 
 package org.apache.jena.fuseki.mgt;
 
+import static org.apache.jena.fuseki.server.CounterName.Requests ;
+import static org.apache.jena.fuseki.server.CounterName.RequestsBad ;
+import static org.apache.jena.fuseki.server.CounterName.RequestsGood ;
+
 import java.io.* ;
 import java.nio.channels.FileChannel ;
 import java.util.List ;
+import java.util.Locale ;
 
 import javax.servlet.ServletException ;
 import javax.servlet.ServletOutputStream ;
@@ -32,11 +37,13 @@ import org.apache.jena.atlas.json.JSON ;
 import org.apache.jena.atlas.json.JsonBuilder ;
 import org.apache.jena.atlas.json.JsonValue ;
 import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.FusekiLib ;
 import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.DatasetRegistry ;
 import org.apache.jena.fuseki.server.FusekiConfig ;
 import org.apache.jena.fuseki.server.SPARQLServer ;
+import org.apache.jena.fuseki.servlets.ActionErrorException ;
 import org.apache.jena.fuseki.servlets.HttpAction ;
 import org.apache.jena.fuseki.servlets.SPARQL_ServletBase ;
 import org.apache.jena.riot.* ;
@@ -45,15 +52,22 @@ import org.apache.jena.riot.system.Error
 import org.apache.jena.riot.system.ErrorHandlerFactory ;
 import org.apache.jena.riot.system.StreamRDF ;
 import org.apache.jena.riot.system.StreamRDFLib ;
+import org.apache.jena.web.HttpSC ;
+import org.slf4j.Logger ;
 
 import com.hp.hpl.jena.rdf.model.Model ;
-import com.hp.hpl.jena.rdf.model.ModelFactory ;
+import com.hp.hpl.jena.rdf.model.ModelFactory ; 
 
 
 public class DatasetsServlet extends SPARQL_ServletBase /* rename */ {
-    //private static Logger log = Fuseki.adminLog ;
+    private static Logger alog = Fuseki.adminLog ;
 
-    // XXX Rewrite for (renamed) SPARQL_ServletBase
+    // XXX Rewrite for (renamed) SPARQL_ServletBase(Logger)
+    // ActionRequest(Logger)
+    //    > ServiceRequest
+    //    > AdminRequest
+    //    > Backup
+    //    > Status
     
     public DatasetsServlet() {}
     
@@ -75,20 +89,68 @@ public class DatasetsServlet extends SPA
     }
     
     @Override
-    protected void validate(HttpAction action) {
+    protected void executeLifecycle(HttpAction action)
+    {
+        startRequest(action) ;
+        try {
+            perform(action) ;
+//            incCounter(action.srvRef, RequestsGood) ;
+//            incCounter(action.dsRef, RequestsGood) ;
+        } catch (ActionErrorException ex) {
+//            incCounter(action.srvRef, RequestsBad) ;
+//            incCounter(action.dsRef, RequestsBad) ;
+            throw ex ;
+        } finally {
+            finishRequest(action) ;
+        }
+    }
+    
+    @Override
+    protected void validate(HttpAction action) { 
+        // Validate later.
     }
 
     @Override
     protected void perform(HttpAction action) {
         String name = mapRequestToDataset(action) ;
+        String method = action.request.getMethod().toUpperCase(Locale.ROOT) ;
+        if ( method.equals("GET") )
+            execGet(name, action) ;
+        else if ( method.equals("POST") )
+            execPost(name, action) ;
+        else if ( method.equals("DELETE") )
+            execDelete(name, action) ;
+        else
+            error(HttpSC.METHOD_NOT_ALLOWED_405) ;
+    }
+
+    // Null means no name given, i.e. names the collection.
+    @Override
+    protected String mapRequestToDataset(HttpAction action) {
+        alog.info("context path  = "+action.request.getContextPath()) ;
+        alog.info("pathinfo      = "+action.request.getPathInfo()) ;
+        alog.info("servlet path  = "+action.request.getServletPath()) ;
+        // if /name
+        //action.request.getServletPath() ;
+        // if /*
+        String pathInfo = action.request.getPathInfo() ;
         
+        // Or uri after servlet path.
+        
+        if ( pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/") )
+            return null ;
+        String name = pathInfo ;
+        // pathInfo starts with a "/"
+        int idx = pathInfo.lastIndexOf('/') ;
+        if ( idx > 0 )
+            name = name.substring(idx) ;
+        // Returns "/name"
+        return name ; 
     }
-    
 
-    protected void execGet(HttpServletRequest request, HttpServletResponse 
response) {
-        log.info("Admin: GET "+request.getRequestURI()); // +Query string.
+    protected void execGet(String name, HttpAction action) {
+        alog.info("GET ds="+(name==null?"":name)) ;
         JsonBuilder builder = new JsonBuilder() ;
-        String name = mapRequestToDataset(request) ;
         if ( name == null ) {
             // All
             builder.startObject() ;
@@ -104,67 +166,54 @@ public class DatasetsServlet extends SPA
         }
         JsonValue v = builder.build() ;
         try {
+            HttpServletResponse response = action.response ;
             ServletOutputStream out = response.getOutputStream() ;
             response.setContentType(WebContent.contentTypeJSON);
             response.setCharacterEncoding(WebContent.charsetUTF8) ;
             JSON.write(out, v) ;
             out.println() ; 
             out.flush() ;
+            success(action) ;
         } catch (IOException ex) { errorOccurred(ex) ; }
     }
     
-    @Deprecated()
-    static String mapRequestToDataset(HttpServletRequest request) {
-        String pathInfo = request.getPathInfo() ;
-        if ( pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/") )
-            return null ;
-        String name = pathInfo ;
-        // pathInfo starts with a "/"
-        int idx = pathInfo.lastIndexOf('/') ;
-        if ( idx > 0 )
-            name = name.substring(idx) ;
-        // Returns "/name"
-        return name ; 
-    }
     
-    // Null means no name given.
-    @Override
-    protected String mapRequestToDataset(HttpAction action) {
-        // Find the part after the name used to dispatch this request. 
-        System.out.println("context path = 
'"+action.request.getContextPath()+"'") ;
-        System.out.println("pathinfo     = 
'"+action.request.getPathInfo()+"'") ;
-        System.out.println("servlet path = 
'"+action.request.getServletPath()+"'") ;
-        
-
-//        log.info("context path = "+action.request.getContextPath()) ;
-//        log.info("pathinfo     = "+action.request.getPathInfo()) ;
-//        log.info("servlet path = "+action.request.getServletPath()) ;
-        // if /name
-        //action.request.getServletPath() ;
-        // if /*
-        String pathInfo = action.request.getPathInfo() ;
-        if ( pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/") )
-            return null ;
-        String name = pathInfo ;
-        // pathInfo starts with a "/"
-        int idx = pathInfo.lastIndexOf('/') ;
-        if ( idx > 0 )
-            name = name.substring(idx) ;
-        // Returns "/name"
-        return name ; 
+    // POST container -> register new dataset
+    // POST conatins/name -> change the state of an exiting entry. 
+    
+    protected void execPost(String name, HttpAction action) {
+        if (name == null )
+            execPostContainer(action) ;
+        else
+            execPostDataset(name, action) ;
     }
     
-    protected void execPost(HttpServletRequest request, HttpServletResponse 
response) {
-        log.info("Admin: POST "+request.getRequestURI()); // +Query string.
-        String name = mapRequestToDataset(request) ;
-        if ( name != null ) {
-            errorBadRequest("POST only to the container") ;
-            return ;
-        }
+    private void execPostDataset(String name, HttpAction action) {
+        String datasetPath = DatasetRef.canocialDatasetPath(name) ;
+        DatasetRef dsDesc = DatasetRegistry.get().get(datasetPath) ;
+        if ( dsDesc == null )
+            errorNotFound("Not found: dataset "+name);
+        
+        String s = action.request.getParameter("status") ;
+        if ( s == null || s.isEmpty() )
+            errorBadRequest("No state change given") ;
+        if ( s.equalsIgnoreCase("active") )
+            dsDesc.activate() ;
+        else if ( s.equalsIgnoreCase("dormant") )
+            dsDesc.dormant() ;
+        else
+            errorBadRequest("New state '"+s+"' not recognized");
+    }
+
+    protected void execPostContainer(HttpAction action) {
+        alog.info("POST container") ;
+        // ??? 
+        // Send to disk, then parse, then decide what to do.
+        // Overwrite?
         
         Model m = ModelFactory.createDefaultModel() ;
         StreamRDF dest = StreamRDFLib.graph(m.getGraph()) ;
-        bodyAsGraph(request, dest) ;
+        bodyAsGraph(action.request, dest) ;
         List<DatasetRef> refs = FusekiConfig.readConfiguration(m);
         
         for (DatasetRef dsDesc : refs) {
@@ -183,10 +232,9 @@ public class DatasetsServlet extends SPA
         } catch (IOException ex) { IO.exception(ex) ; }
     }
 
-    protected void execDelete(HttpServletRequest request, HttpServletResponse 
response) {
+    protected void execDelete(String name, HttpAction action) {
         // Find DS.
-        log.info("Admin: DELETE "+request.getRequestURI()); // +Query string.
-        String name = mapRequestToDataset(request) ;
+        alog.info("DELETE "+(name==null?"":name));
         if ( name == null ) {
             errorBadRequest("DELETE only to the container entries.") ;
             return ;
@@ -233,10 +281,10 @@ public class DatasetsServlet extends SPA
         int len = request.getContentLength() ;
 //        if ( verbose ) {
 //            if ( len >= 0 )
-//                log.info(format("[%d]   Body: Content-Length=%d, 
Content-Type=%s, Charset=%s => %s", action.id, len,
+//                alog.info(format("[%d]   Body: Content-Length=%d, 
Content-Type=%s, Charset=%s => %s", action.id, len,
 //                                ct.getContentType(), ct.getCharset(), 
lang.getName())) ;
 //            else
-//                log.info(format("[%d]   Body: Content-Type=%s, Charset=%s => 
%s", action.id, ct.getContentType(),
+//                alog.info(format("[%d]   Body: Content-Type=%s, Charset=%s 
=> %s", action.id, ct.getContentType(),
 //                                ct.getCharset(), lang.getName())) ;
 //        }
         dest.prefix("root", base+"#");

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ManagementServer.java
 Mon Dec  2 16:39:26 2013
@@ -76,9 +76,9 @@ public class ManagementServer
             base = base + "/" ;
         if ( !base.startsWith("/"))
             throw new FusekiException("Base URI does nto start with a '/'") ; 
-        addServlet(context, new MgtCmdServlet(),    base+"mgt") ;
-        addServlet(context, new StatsServlet(),     base+"stats") ;
-        addServlet(context, new DatasetsCollectionServlet(),     
base+"datasets/*") ; // Covers base+"datasets" 
+        addServlet(context, new MgtCmdServlet(),        base+"mgt") ;
+        addServlet(context, new StatsServlet(),         base+"stats") ;
+        addServlet(context, new DatasetsServlet(),      base+"datasets/*") ; 
// Covers "datasets" as well. 
     }
 
     // SHARE

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetRef.java
 Mon Dec  2 16:39:26 2013
@@ -18,8 +18,12 @@
 
 package org.apache.jena.fuseki.server;
 
+import static org.apache.jena.fuseki.server.DatasetStatus.ACTIVE ;
+import static org.apache.jena.fuseki.server.DatasetStatus.CLOSING ;
+import static org.apache.jena.fuseki.server.DatasetStatus.DORMANT ;
+import static org.apache.jena.fuseki.server.DatasetStatus.UNINITIALIZED ;
+
 import java.util.* ;
-import java.util.concurrent.atomic.AtomicBoolean ;
 import java.util.concurrent.atomic.AtomicLong ;
 
 import org.apache.jena.fuseki.Fuseki ;
@@ -39,7 +43,6 @@ public class DatasetRef implements Datas
     public ServiceRef upload                    = new ServiceRef("upload") ;
     public ServiceRef readGraphStore            = new ServiceRef("gspRead") ;
     public ServiceRef readWriteGraphStore       = new 
ServiceRef("gspReadWrite") ; 
-    private AtomicBoolean shuttingdown          = new AtomicBoolean(false) ; 
     
     // Dataset-level counters.
     private final CounterSet counters           = new CounterSet() ;
@@ -48,18 +51,39 @@ public class DatasetRef implements Datas
     
     private Map<String, ServiceRef> endpoints   = new HashMap<String, 
ServiceRef>() ;
     private List<ServiceRef> serviceRefs        = new ArrayList<ServiceRef>() ;
-    private boolean initialized = false ;
+    private volatile DatasetStatus state = UNINITIALIZED ;
     
-    // Two step initiation (c.f. Builder pattern)
-    // Create object - incrementally set state - call init to calculate 
internal datastructures.
     public DatasetRef() {}
-    public void init() {
-        if ( initialized )
-            Fuseki.serverLog.warn("Already initialized: dataset = "+name) ;
-        initialized = true ;
-        initServices() ;
+    
+    public void activate() {
+        if ( getState() == ACTIVE )
+            Fuseki.serverLog.warn("Already active: dataset = "+name) ;
+        if ( getState() == UNINITIALIZED )
+            initServices() ;    
+        setState(ACTIVE) ;
+        
     }
     
+    public boolean isActive() { return getState() == ACTIVE ; }  
+    
+    public DatasetStatus getStatus()    { return state ; }
+    
+    private DatasetStatus getState() {
+        return state ;
+    }
+
+    private void setState(DatasetStatus newState) {
+        state = newState ;
+    }
+
+    public void dormant() {
+        if ( getState() == DORMANT )
+            Fuseki.serverLog.warn("Already dormant: dataset = "+name) ;
+        if ( getState() == UNINITIALIZED )
+            initServices() ;    
+        setState(DORMANT) ;
+    }
+
     @Override public String toString() { return "DatasetRef:'"+name+"'" ; }  
     
     private void initServices() {
@@ -78,8 +102,8 @@ public class DatasetRef implements Datas
     }
 
     public ServiceRef getServiceRef(String service) {
-        if ( ! initialized )
-            Fuseki.serverLog.error("Not initialized: dataset = "+name) ;
+        if ( ! isActive() )
+            Fuseki.serverLog.error("Not active: dataset = "+name) ;
         if ( service.startsWith("/") )
             service = service.substring(1, service.length()) ; 
         return endpoints.get(service) ;
@@ -101,24 +125,6 @@ public class DatasetRef implements Datas
     /** Cumulative counter of writer transactions */
     public AtomicLong   totalWriteTxn           = new AtomicLong(0) ;
     
-//    /** Count of requests received - anyzservice */
-//    public AtomicLong   countServiceRequests    = new AtomicLong(0) ;
-//    /** Count of requests received that fail in some way */
-//    public AtomicLong   countServiceRequestsBad = new AtomicLong(0) ;
-//    /** Count of requests received that fail in some way */
-//    public AtomicLong   countServiceRequestsOK  = new AtomicLong(0) ;
-//
-//    // SPARQL Query
-//    
-//    /** Count of SPARQL Queries successfully executed */
-//    public AtomicLong   countQueryOK            = new AtomicLong(0) ;
-//    /** Count of SPARQL Queries with syntax errors */
-//    public AtomicLong   countQueryBadSyntax     = new AtomicLong(0) ;
-//    /** Count of SPARQL Queries with timeout on execution */
-//    public AtomicLong   countQueryTimeout       = new AtomicLong(0) ;
-//    /** Count of SPARQL Queries with execution errors (not timeouts) */
-//    public AtomicLong   countQueryBadExecution  = new AtomicLong(0) ;
-
     public void startTxn(ReadWrite mode)
     {
         switch(mode)
@@ -149,9 +155,9 @@ public class DatasetRef implements Datas
     }
 
     private void checkShutdown() {
-        if ( shuttingdown.get() ) {
-        if ( activeReadTxn.get() == 0 && activeWriteTxn.get() == 0 )
-            shutdown() ;
+        if ( getState() == CLOSING ) {
+            if ( activeReadTxn.get() == 0 && activeWriteTxn.get() == 0 )
+                shutdown() ;
         }
     }
     
@@ -161,6 +167,7 @@ public class DatasetRef implements Datas
             DatasetGraphTransaction dsgtxn = (DatasetGraphTransaction)dataset ;
             StoreConnection.release(dsgtxn.getLocation()) ;
         }
+        setState(DORMANT) ;
     }
     
     //TODO Need to be able to set this from the config file.  
@@ -181,7 +188,7 @@ public class DatasetRef implements Datas
     public void gracefulShutdown() {
         // In graceful shutdown, we assume it has been unlinked from the 
registry.
         // We just wait for the transactions to end.
-        shuttingdown.set(true) ;
+        setState(CLOSING) ;
         checkShutdown() ;
     }
     

Added: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetStatus.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetStatus.java?rev=1547092&view=auto
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetStatus.java
 (added)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/DatasetStatus.java
 Mon Dec  2 16:39:26 2013
@@ -0,0 +1,24 @@
+/**
+ * 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 org.apache.jena.fuseki.server;
+
+public enum DatasetStatus {
+    UNINITIALIZED, ACTIVE, CLOSING, DORMANT
+}
+

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiConfig.java
 Mon Dec  2 16:39:26 2013
@@ -110,6 +110,13 @@ public class FusekiConfig {
     // NEW
     public static final String configurationsDirectory = "configure" ;
     public static final String fusekiService = 
"http://jena.apache.org/fuseki#Service"; ;
+    private static FilenameFilter visibleFiles = 
+        new FilenameFilter() {
+            @Override
+            public boolean accept(File dir, String name) {
+                return ! name.startsWith(".") ;
+            }
+        } ;
     
     public static void additional(ServerConfig config) {
         // server/
@@ -117,12 +124,11 @@ public class FusekiConfig {
         // databases/
         
         File d = new File(configurationsDirectory) ;
-        String[] assemblerFiles = d.list(new FilenameFilter() {
-          @Override
-          public boolean accept(File dir, String name) {
-              return ! name.startsWith(".") ;
-          }
-        });
+        String[] assemblerFiles = d.list(visibleFiles) ;
+        
+        if ( assemblerFiles == null ) {
+            log.warn("No configurtion directory 
'"+configurationsDirectory+"'") ;
+        }
         
         String x = Iter.asString(Arrays.asList(assemblerFiles));
         log.info("Files: "+x);
@@ -250,7 +256,7 @@ public class FusekiConfig {
         noDataset.query.endpoints.add(HttpNames.ServiceQuery) ;
         noDataset.query.endpoints.add(HttpNames.ServiceQueryAlt) ;
         noDataset.allowDatasetUpdate = false ;
-        noDataset.init() ;
+        noDataset.activate() ;
         // Don't register it.
         // This is used as a placeholder and shoudl not be found by
         // "all datasets"

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/SPARQLServer.java
 Mon Dec  2 16:39:26 2013
@@ -302,7 +302,7 @@ public class SPARQLServer {
     }
 
     public static void registerDataset(String datasetPath, DatasetRef dsDesc) {
-        dsDesc.init() ;
+        dsDesc.activate() ;
         if ( DatasetRegistry.get().isRegistered(datasetPath) )
             throw new FusekiConfigException("Already registered: key = 
"+datasetPath) ;
         DatasetRegistry.get().put(datasetPath, dsDesc) ;

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
 Mon Dec  2 16:39:26 2013
@@ -162,6 +162,7 @@ public abstract class SPARQL_ServletBase
             validate(action) ;
         } catch (ActionErrorException ex) {
             incCounter(action.dsRef,RequestsBad) ;
+            incCounter(action.srvRef, RequestsBad) ;
             throw ex ;
         }
 

Modified: 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
URL: 
http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java?rev=1547092&r1=1547091&r2=1547092&view=diff
==============================================================================
--- 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
 (original)
+++ 
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_UberServlet.java
 Mon Dec  2 16:39:26 2013
@@ -33,6 +33,7 @@ import org.apache.jena.fuseki.conneg.Con
 import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.ServiceRef ;
 import org.apache.jena.riot.WebContent ;
+import org.apache.jena.web.HttpSC ;
 
 /** This servlet can be attached to a dataset location
  *  and acts as a router for all SPARQL operations
@@ -138,6 +139,8 @@ public abstract class SPARQL_UberServlet
         String uri = request.getRequestURI() ;
         String method = request.getMethod() ;
         DatasetRef desc = action.dsRef ;
+        if ( ! desc.isActive() )
+            error(HttpSC.SERVICE_UNAVAILABLE_503, "Dataset not currently 
active");
         
         String trailing = findTrailing(uri, desc.name) ;
         String qs = request.getQueryString() ;


Reply via email to