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 2013/12/21 16:28:46 UTC
svn commit: r1552916 - in /jena/branches/jena-fuseki-new-ui: ./ pages/admin/
pages/css/ src/main/java/org/apache/jena/fuseki/
src/main/java/org/apache/jena/fuseki/mgt/
src/main/java/org/apache/jena/fuseki/server/
src/main/java/org/apache/jena/fuseki/se...
Author: andy
Date: Sat Dec 21 15:28:46 2013
New Revision: 1552916
URL: http://svn.apache.org/r1552916
Log:
UI : create datasets by form using server side templating.
Added:
jena/branches/jena-fuseki-new-ui/templates/
jena/branches/jena-fuseki-new-ui/templates/config-mem
jena/branches/jena-fuseki-new-ui/templates/config-tdb
jena/branches/jena-fuseki-new-ui/testing/
jena/branches/jena-fuseki-new-ui/testing/config-ds-1.ttl
Modified:
jena/branches/jena-fuseki-new-ui/ (props changed)
jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html
jena/branches/jena-fuseki-new-ui/pages/css/fui.css
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiLib.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.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/FusekiServletContextListener.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
Propchange: jena/branches/jena-fuseki-new-ui/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat Dec 21 15:28:46 2013
@@ -15,4 +15,5 @@ log
configure
systems
datasets
+databases
system
Modified: jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html (original)
+++ jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html Sat Dec 21 15:28:46 2013
@@ -57,8 +57,80 @@
<div class="row">
<h1>Data management</h1>
</div>
- </div>
+ <hr/>
+ <p>Focus on one database</p>
+ <ul>
+ <li>Statistics</li>
+ <li>Backup</li>
+ <li>Online/offline</li>
+ <li><em>Delete</em></li>
+ </ul>
+ <hr/>
+
+ <div class="row">
+ <h2>Create database</h2>
+ <small>
+ <p>This is just a quick sketch to get the system working.</p>
+ <p>Some Alternatives:</p>
+ <ul>
+ <li><p>Preset recipes (as below) that the server expands</p></li>
+ <li><p>Have a template area (assembler) in broswer with help to
+ fill details like</p></li>
+ </ul>
+ </small>
+
+ <form action="/$/datasets" method="post" role="form">
+
+ <div class="form-group">
+ <label for="inputDatabase">Database Name</label>
+ <div>
+ <input type="text" class="form-control" name="dbName" id="dbName" placeholder="Database name">
+ </div>
+ </div>
+
+ <div class="checkbox">
+ <label>
+ <input type="radio" name="dbType" value="mem" checked>
+ In-Memory
+ </label>
+ </div>
+ <div class="checkbox">
+ <label>
+ <input type="radio" name="dbType" value="tdb">
+ Persistent
+ </label>
+ </div>
+ <button type="submit" class="btn btn-default">Create</button>
+ </form>
+
+ </div>
+
+
+ <hr/>
+
+ <!--
+ <div class="row">
+ <h2>Database Statistics</h2>
+ </div>
+
+ <div class="row">
+ <h2>Backup Database</h2>
+ </div>
+
+<p> <li><p>Have a template area (assembler) in broswer with help to
+ fill details like</p></li>
+ <div class="row">
+ <h2>Delete Database</h2>
+ </div>
+
+ <hr/>
+ <div class="row">
+ <h2>Change Active/Dormant Status</h2>
+ </div>
+ -->
+
+ </div>
<script src="../js/lib/jquery-1.10.2.min.js"></script>
<script src="../js/lib/bootstrap.min.js"></script>
</body>
Modified: jena/branches/jena-fuseki-new-ui/pages/css/fui.css
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/pages/css/fui.css?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/pages/css/fui.css (original)
+++ jena/branches/jena-fuseki-new-ui/pages/css/fui.css Sat Dec 21 15:28:46 2013
@@ -7,6 +7,15 @@ h1 + p {
margin-bottom: 20px;
}
+h2 {
+ margin-top: 0;
+ font-size: 16pt;
+}
+
+h2 + p {
+ margin-bottom: 18px;
+}
+
a#server-status-light {
display: inline-block;
margin: 0;
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiLib.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiLib.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiLib.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/FusekiLib.java Sat Dec 21 15:28:46 2013
@@ -39,6 +39,8 @@ import com.hp.hpl.jena.sparql.core.Quad
import com.hp.hpl.jena.sparql.util.Convert ;
public class FusekiLib {
+ // ==> ActionLib
+
/** Get the content type of an action or return the default.
* @param action
* @return ContentType
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Sat Dec 21 15:28:46 2013
@@ -20,8 +20,9 @@ package org.apache.jena.fuseki.mgt;
import static java.lang.String.format ;
-import java.io.* ;
-import java.nio.channels.FileChannel ;
+import java.io.IOException ;
+import java.io.InputStream ;
+import java.io.StringReader ;
import java.util.Iterator ;
import java.util.Locale ;
@@ -65,6 +66,7 @@ import com.hp.hpl.jena.tdb.transaction.D
import com.hp.hpl.jena.update.UpdateAction ;
import com.hp.hpl.jena.update.UpdateFactory ;
import com.hp.hpl.jena.update.UpdateRequest ;
+import com.hp.hpl.jena.util.FileUtils ;
public class ActionDatasets extends ActionCtl {
// XXX ActionContainerItem
@@ -79,6 +81,13 @@ public class ActionDatasets extends Acti
static private Property pServiceName = FusekiVocab.pServiceName ;
static private Property pStatus = FusekiVocab.pStatus ;
+ private static final String paramDatasetName = "dbName" ;
+ private static final String paramDatasetType = "dbType" ;
+ private static final String tDatabasetTDB = "tdb" ;
+ private static final String tDatabasetMem = "mem" ;
+ private static final String templateMemFN = "templates/config-mem" ;
+ private static final String templateTDBFN = "templates/config-tdb" ;
+
public ActionDatasets() { super() ; }
@Override
@@ -132,8 +141,10 @@ public class ActionDatasets extends Acti
} catch (IOException ex) { ServletOps.errorOccurred(ex) ; }
}
- // This does not consult the system database for dormant etc.
+ // ---- GET : return details of dataset or datasets.
+
private JsonValue execGetContainer(HttpAction action) {
+ action.log.info(format("[%d] GET datasets", action.id)) ;
JsonBuilder builder = new JsonBuilder() ;
builder.startObject("D") ;
builder.key("datasets") ;
@@ -153,8 +164,12 @@ public class ActionDatasets extends Acti
return builder.build() ;
}
- // POST container -> register new dataset
- // POST contains/name -> change the state of an existing entry.
+ // XXX Split contained and per-dataset operations into separate servlets?
+
+ // ---- POST
+
+ // POST /$/datasets/ -- to the container -> register new dataset
+ // POST /$/datasets/name -- change something about an existing dataset
protected void execPost(HttpAction action) {
if (action.dsRef.name == null )
@@ -163,10 +178,6 @@ public class ActionDatasets extends Acti
execPostDataset(action) ;
}
- // An action on a dataset.
- // XXX extend to backup etc??
- // XXX Constant (throughout)
-
private void execPostDataset(HttpAction action) {
String name = action.dsRef.name ;
if ( name == null )
@@ -180,7 +191,7 @@ public class ActionDatasets extends Acti
if ( s == null || s.isEmpty() )
ServletOps.errorBadRequest("No state change given") ;
- // setDatasetState is a transaction on the pesistent state of the server.
+ // setDatasetState is a transaction on the persistent state of the server.
if ( s.equalsIgnoreCase("active") ) {
setDatasetState(name, FusekiVocab.stateActive) ;
dsDesc.activate() ;
@@ -192,47 +203,23 @@ public class ActionDatasets extends Acti
ServletOps.success(action) ;
}
- // Persistent state change.
- private void setDatasetState(String name, Resource newState) {
- boolean committed = false ;
- system.begin(ReadWrite.WRITE) ;
- try {
- String dbName = name ;
- if ( dbName.startsWith("/") )
- dbName = dbName.substring(1) ;
-
- String update = StrUtils.strjoinNL
- (SystemState.PREFIXES,
- "DELETE { GRAPH ?g { ?s fu:status ?state } }",
- "INSERT { GRAPH ?g { ?s fu:status "+FmtUtils.stringForRDFNode(newState)+" } }",
- "WHERE {",
- " GRAPH ?g { ?s fu:name '"+dbName+"' ; ",
- " fu:status ?state .",
- " }",
- "}"
- ) ;
- UpdateRequest req = UpdateFactory.create(update) ;
- UpdateAction.execute(req, system);
- system.commit();
- committed = true ;
- } finally {
- if ( ! committed ) system.abort() ;
- system.end() ;
- }
- }
-
private void execPostContainer(HttpAction action) {
+
String newURI = JenaUUID.generate().asURI() ;
Node gn = NodeFactory.createURI(newURI) ;
- //action.beginWrite() ;
+ ContentType ct = FusekiLib.getContentType(action) ;
+
boolean committed = false ;
system.begin(ReadWrite.WRITE) ;
try {
- Model model = system.getNamedModel(newURI) ;
+ Model model = system.getNamedModel(gn.getURI()) ;
StreamRDF dest = StreamRDFLib.graph(model.getGraph()) ;
- bodyAsGraph(action, dest) ;
- // Find name. SPARQL?
+
+ if ( WebContent.isHtmlForm(ct) )
+ assemblerFromForm(action, dest) ;
+ else
+ assemblerFromBody(action, dest) ;
Statement stmt = getOne(model, null, pServiceName, null) ;
if ( stmt == null ) {
@@ -256,6 +243,9 @@ public class ActionDatasets extends Acti
String datasetName = object.getLexicalForm() ;
String datasetPath = DatasetRef.canocialDatasetPath(datasetName) ;
+ action.log.info(format("[%d] Create database : name = %s", action.id, datasetPath)) ;
+
+
if ( DatasetRegistry.get().isRegistered(datasetPath) ) {
// And abort.
ServletOps.error(HttpSC.CONFLICT_409, "Name already registered "+datasetName) ;
@@ -276,6 +266,40 @@ public class ActionDatasets extends Acti
}
}
+ private void assemblerFromBody(HttpAction action, StreamRDF dest) {
+ bodyAsGraph(action, dest) ;
+ }
+
+ private void assemblerFromForm(HttpAction action, StreamRDF dest) {
+// Enumeration<String> en = action.getRequest().getParameterNames() ;
+// while( en.hasMoreElements() ) {
+// String pn = en.nextElement() ;
+// System.out.println(pn) ;
+// }
+
+ String dbType = action.getRequest().getParameter(paramDatasetType) ;
+ String dbName = action.getRequest().getParameter(paramDatasetName) ;
+ action.log.info(format("[%d] Create database : name = %s, type = %s", action.id, dbName, dbType )) ;
+ if ( dbType == null || dbName == null )
+ ServletOps.errorBadRequest("Required parameters: dbName and dbType");
+ if ( ! dbType.equals(tDatabasetTDB) && ! dbType.equals(tDatabasetMem) )
+ ServletOps.errorBadRequest(format("dbType can be only '%s' or '%s'", tDatabasetTDB, tDatabasetMem)) ;
+
+ String template = null ;
+ try {
+ if ( dbType.equals(tDatabasetTDB))
+ template = FileUtils.readWholeFileAsUTF8(templateTDBFN) ;
+ if ( dbType.equals(tDatabasetMem))
+ template = FileUtils.readWholeFileAsUTF8(templateMemFN) ;
+ } catch (IOException ex) { IO.exception(ex); }
+
+ // XXX Be careful.
+ template = template.replaceAll("\\{NAME\\}", dbName) ;
+ RDFDataMgr.parse(dest, new StringReader(template), "http://base/", Lang.TTL) ;
+ }
+
+ // ---- DELETE
+
protected void execDelete(HttpAction action) {
// Does not exist?
String name = action.dsRef.name ;
@@ -283,20 +307,27 @@ public class ActionDatasets extends Acti
name = "" ;
action.log.info(format("[%d] DELETE ds=%s", action.id, name)) ;
if ( action.dsRef.name == null ) {
- ServletOps.errorBadRequest("DELETE only to the container entries.") ;
+ ServletOps.errorBadRequest("DELETE only applies to a specific dataset.") ;
return ;
}
+
+ if ( ! DatasetRegistry.get().isRegistered(name) )
+ ServletOps.errorNotFound("No such dataset registered: "+name);
systemDSG.begin(ReadWrite.WRITE) ;
boolean committed =false ;
try {
+ DatasetRef dsRef = DatasetRegistry.get().get(name) ;
+ // Redo check inside transaction.
+ if ( dsRef == null )
+ ServletOps.errorNotFound("No such dataset registered: "+name);
+
// Name to graph
Quad q = getOne(SystemState.getDatasetGraph(), null, null, pServiceName.asNode(), null) ;
if ( q == null )
ServletOps.errorBadRequest("Failed to find dataset for '"+name+"'");
Node gn = q.getGraph() ;
-
- DatasetRef dsRef = DatasetRegistry.get().get(name) ;
+
dsRef.gracefulShutdown() ;
DatasetRegistry.get().remove(name) ;
// XXX or set to state deleted.
@@ -310,7 +341,38 @@ public class ActionDatasets extends Acti
}
}
- private Quad getOne(DatasetGraph dsg, Node g, Node s, Node p, Node o) {
+ // Persistent state change.
+ private void setDatasetState(String name, Resource newState) {
+ boolean committed = false ;
+ system.begin(ReadWrite.WRITE) ;
+ try {
+ String dbName = name ;
+ if ( dbName.startsWith("/") )
+ dbName = dbName.substring(1) ;
+
+ String update = StrUtils.strjoinNL
+ (SystemState.PREFIXES,
+ "DELETE { GRAPH ?g { ?s fu:status ?state } }",
+ "INSERT { GRAPH ?g { ?s fu:status "+FmtUtils.stringForRDFNode(newState)+" } }",
+ "WHERE {",
+ " GRAPH ?g { ?s fu:name '"+dbName+"' ; ",
+ " fu:status ?state .",
+ " }",
+ "}"
+ ) ;
+ UpdateRequest req = UpdateFactory.create(update) ;
+ UpdateAction.execute(req, system);
+ system.commit();
+ committed = true ;
+ } finally {
+ if ( ! committed ) system.abort() ;
+ system.end() ;
+ }
+ }
+
+ // ---- Auxilary functions
+
+ private static Quad getOne(DatasetGraph dsg, Node g, Node s, Node p, Node o) {
Iterator<Quad> iter = dsg.findNG(g, s, p, o) ;
if ( ! iter.hasNext() )
return null ;
@@ -320,7 +382,7 @@ public class ActionDatasets extends Acti
return q ;
}
- private Statement getOne(Model m, Resource s, Property p, RDFNode o) {
+ private static Statement getOne(Model m, Resource s, Property p, RDFNode o) {
StmtIterator iter = m.listStatements(s, p, o) ;
if ( ! iter.hasNext() )
return null ;
@@ -330,18 +392,6 @@ public class ActionDatasets extends Acti
return stmt ;
}
- private static void copyFile(File source, File dest) {
- try {
- @SuppressWarnings("resource")
- FileChannel sourceChannel = new FileInputStream(source).getChannel();
- @SuppressWarnings("resource")
- FileChannel destChannel = new FileOutputStream(dest).getChannel();
- destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
- sourceChannel.close();
- destChannel.close();
- } catch (IOException ex) { IO.exception(ex); }
- }
-
// XXX Merge with Upload.incomingData
private static void bodyAsGraph(HttpAction action, StreamRDF dest) {
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=1552916&r1=1552915&r2=1552916&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 Sat Dec 21 15:28:46 2013
@@ -199,8 +199,6 @@ public class DatasetRef implements Datas
checkShutdown() ;
}
- // MBean
-
@Override
public String getName() { return name ; }
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/server/FusekiServletContextListener.java Sat Dec 21 15:28:46 2013
@@ -49,7 +49,7 @@ public class FusekiServletContextListene
@Override
public void contextInitialized(ServletContextEvent sce) {
- //confLog.info("contextInitialized");
+ confLog.info("contextInitialized");
ServletContext cxt = sce.getServletContext() ;
init() ;
}
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionBase.java Sat Dec 21 15:28:46 2013
@@ -28,6 +28,7 @@ import javax.servlet.ServletException ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
+
//import org.apache.jena.atlas.logging.Log ;
import org.apache.jena.fuseki.Fuseki ;
import org.apache.jena.fuseki.HttpNames ;
@@ -37,6 +38,7 @@ import org.slf4j.Logger ;
import com.hp.hpl.jena.query.ARQ ;
import com.hp.hpl.jena.query.QueryCancelledException ;
import com.hp.hpl.jena.sparql.util.Context ;
+import com.hp.hpl.jena.sparql.util.Utils ;
/** General request lifecycle */
public abstract class ActionBase extends ServletBase
@@ -50,10 +52,9 @@ public abstract class ActionBase extends
@Override
public void init() {
- log.info("ServletContextName="+getServletContext().getServletContextName()) ;
+ log.info("["+Utils.className(this)+"] ServletContextName="+getServletContext().getServletContextName()) ;
//super.init() ;
}
-
// Common framework for handling HTTP requests
protected void doCommon(HttpServletRequest request, HttpServletResponse response)
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ActionLib.java Sat Dec 21 15:28:46 2013
@@ -20,8 +20,11 @@ package org.apache.jena.fuseki.servlets;
import javax.servlet.http.HttpServletRequest ;
+import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.fuseki.FusekiLib ;
import org.apache.jena.fuseki.server.DatasetRef ;
import org.apache.jena.fuseki.server.DatasetRegistry ;
+import org.apache.jena.riot.WebContent ;
/** Operations related to servlets */
@@ -132,5 +135,11 @@ public class ActionLib {
return x ;
}
+ public static boolean isHTMLForm(HttpAction action ) {
+ ContentType ct = FusekiLib.getContentType(action) ;
+ String incoming = ct.getContentType() ;
+ return WebContent.contentTypeForm.equalsIgnoreCase(incoming) ;
+ }
+
}
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/FusekiFilter.java Sat Dec 21 15:28:46 2013
@@ -24,6 +24,8 @@ import javax.servlet.* ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
+import com.hp.hpl.jena.sparql.util.Utils ;
+
import org.apache.jena.fuseki.Fuseki ;
import org.apache.jena.fuseki.server.DatasetRegistry ;
import org.slf4j.Logger ;
@@ -37,7 +39,9 @@ public class FusekiFilter implements Fil
private static SPARQL_UberServlet überServlet = new SPARQL_UberServlet.AccessByConfig() ;
@Override
- public void init(FilterConfig filterConfig) throws ServletException {}
+ public void init(FilterConfig filterConfig) throws ServletException {
+ log.info("Filter: ["+Utils.className(this)+"] ServletContextName="+filterConfig.getServletContext().getServletContextName()) ;
+ }
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Query.java Sat Dec 21 15:28:46 2013
@@ -85,13 +85,13 @@ public abstract class SPARQL_Query exten
String incoming = ct.getContentType() ;
// POST application/sparql-query
- if (WebContent.contentTypeSPARQLQuery.equals(incoming))
+ if ( WebContent.isHtmlForm(ct) )
{
executeBody(action) ;
return ;
}
// POST application/x-www-form-url
- if (WebContent.contentTypeForm.equals(incoming))
+ if (ActionLib.isHTMLForm(action) )
{
executeWithParameter(action) ;
return ;
Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java?rev=1552916&r1=1552915&r2=1552916&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java Sat Dec 21 15:28:46 2013
@@ -33,7 +33,7 @@ public abstract class ServletBase extend
private static AtomicLong requestIdAlloc = new AtomicLong(0) ;
protected ServletBase() {}
-
+
/**
* Helper method which gets a unique request ID and appends it as a header
* to the response
Added: jena/branches/jena-fuseki-new-ui/templates/config-mem
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/templates/config-mem?rev=1552916&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/templates/config-mem (added)
+++ jena/branches/jena-fuseki-new-ui/templates/config-mem Sat Dec 21 15:28:46 2013
@@ -0,0 +1,27 @@
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+## ---------------------------------------------------------------
+## Updatable in-memory dataset.
+
+<#service1> rdf:type fuseki:Service ;
+ # URI of the dataset -- http://host:port/ds
+ fuseki:name "{NAME}" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:serviceQuery "query" ;
+ fuseki:serviceUpdate "update" ;
+ fuseki:serviceUpload "upload" ;
+ fuseki:serviceReadWriteGraphStore "data" ;
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#dataset> ;
+ .
+
+## In-memory, initially empty.
+<#dataset> rdf:type ja:RDFDataset .
Added: jena/branches/jena-fuseki-new-ui/templates/config-tdb
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/templates/config-tdb?rev=1552916&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/templates/config-tdb (added)
+++ jena/branches/jena-fuseki-new-ui/templates/config-tdb Sat Dec 21 15:28:46 2013
@@ -0,0 +1,36 @@
+# Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0
+
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+# TDB
+[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
+tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
+tdb:GraphTDB rdfs:subClassOf ja:Model .
+
+## ---------------------------------------------------------------
+## Updatable TDB dataset with all services enabled.
+
+<#service_tdb_all> rdf:type fuseki:Service ;
+ rdfs:label "TDB {NAME}" ;
+ fuseki:name "{NAME}" ;
+ fuseki:serviceQuery "query" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:serviceUpdate "update" ;
+ fuseki:serviceUpload "upload" ;
+ fuseki:serviceReadWriteGraphStore "data" ;
+ # A separate read-only graph store endpoint:
+ fuseki:serviceReadGraphStore "get" ;
+ fuseki:dataset <#tdb_dataset_readwrite> ;
+
+ .
+
+<#tdb_dataset_readwrite> rdf:type tdb:DatasetTDB ;
+ tdb:location "databases/{NAME}" ;
+ ja:context [ ja:cxtName "arq:queryTimeout" ; ja:cxtValue "1000" ] ;
+ tdb:unionDefaultGraph true ;
+ .
Added: jena/branches/jena-fuseki-new-ui/testing/config-ds-1.ttl
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/testing/config-ds-1.ttl?rev=1552916&view=auto
==============================================================================
--- jena/branches/jena-fuseki-new-ui/testing/config-ds-1.ttl (added)
+++ jena/branches/jena-fuseki-new-ui/testing/config-ds-1.ttl Sat Dec 21 15:28:46 2013
@@ -0,0 +1,15 @@
+@prefix : <#> .
+@prefix fuseki: <http://jena.apache.org/fuseki#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
+
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
+
+<#service1> rdf:type fuseki:Service ;
+ # URI of the dataset -- http://host:port/ds
+ fuseki:name "test-ds2" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#emptyDataset> ;
+ .
+
+<#emptyDataset> rdf:type ja:RDFDataset .