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() ;