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 2011/08/03 00:28:13 UTC
svn commit: r1153293 - in /incubator/jena/Jena2/Fuseki/trunk: src-dev/dev/
src/main/java/org/openjena/fuseki/ src/main/java/org/openjena/fuseki/migrate/
src/main/java/org/openjena/fuseki/server/
src/main/java/org/openjena/fuseki/servlets/
Author: andy
Date: Tue Aug 2 22:28:11 2011
New Revision: 1153293
URL: http://svn.apache.org/viewvc?rev=1153293&view=rev
Log:
General purpose SPARQL processor (not yet enabled)
Added:
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java (with props)
Modified:
incubator/jena/Jena2/Fuseki/trunk/src-dev/dev/DevFuseki.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/Fuseki.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/GraphLoadUtils.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/server/SPARQLServer.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/HttpAction.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_Query.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryDataset.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryGeneral.java
incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_ServletBase.java
Modified: incubator/jena/Jena2/Fuseki/trunk/src-dev/dev/DevFuseki.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src-dev/dev/DevFuseki.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src-dev/dev/DevFuseki.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src-dev/dev/DevFuseki.java Tue Aug 2 22:28:11 2011
@@ -20,9 +20,10 @@ package dev;
public class DevFuseki
{
- // LimitingGraph, LImitingBulkUpdateHandler --> chnage to use a limiting Sink<>
- // Finish: SPARQL_QueryGeneral -- attach at? /sparql/proc?
- // --jetty-config
+ // LimitingGraph, LimitingBulkUpdateHandler --> chnage to use a limiting Sink<>
+ // Finish: SPARQL_QueryGeneral
+ // Parse errors and etc need to be passed out.
+ // --jetty-config documentation
// Rework arguments.
// Explicit install pages.
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/Fuseki.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/Fuseki.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/Fuseki.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/Fuseki.java Tue Aug 2 22:28:11 2011
@@ -27,6 +27,7 @@ import com.hp.hpl.jena.sparql.SystemARQ
import com.hp.hpl.jena.sparql.lib.Metadata ;
import com.hp.hpl.jena.sparql.mgt.ARQMgt ;
import com.hp.hpl.jena.sparql.mgt.SystemInfo ;
+import com.hp.hpl.jena.util.FileManager ;
public class Fuseki
{
@@ -48,18 +49,25 @@ public class Fuseki
return m ;
}
- static public String NAME = "Fuseki" ;
- static public String VERSION = metadata.get(PATH+".version", "development") ;
- static public String BUILD_DATE = metadata.get(PATH+".build.datetime", "unknown") ; // call Date if unavailable.
- public static String serverHttpName = NAME+" ("+VERSION+")" ;
+ static public final String NAME = "Fuseki" ;
+ static public final String VERSION = metadata.get(PATH+".version", "development") ;
+ static public final String BUILD_DATE = metadata.get(PATH+".build.datetime", "unknown") ; // call Date if unavailable.
+ static public final String serverHttpName = NAME+" ("+VERSION+")" ;
// Log for operations
- public static String requestLogName = PATH+".Fuseki" ;
- public static Logger requestLog = LoggerFactory.getLogger(PATH+".Fuseki") ;
- public static String serverLogName = PATH+".Server" ;
- public static Logger serverLog = LoggerFactory.getLogger(PATH+".Server") ;
+ public static final String requestLogName = PATH+".Fuseki" ;
+ public static final Logger requestLog = LoggerFactory.getLogger(PATH+".Fuseki") ;
+ public static final String serverLogName = PATH+".Server" ;
+ public static final Logger serverLog = LoggerFactory.getLogger(PATH+".Server") ;
// Log for general server messages.
+ public static final FileManager webFileManager ;
+ static {
+ webFileManager = new FileManager() ;
+ // Only know how to handle http URLs
+ webFileManager.addLocatorURL() ;
+ }
+
private static boolean initialized = false ;
public static void init()
{
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/GraphLoadUtils.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/GraphLoadUtils.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/GraphLoadUtils.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/GraphLoadUtils.java Tue Aug 2 22:28:11 2011
@@ -19,18 +19,25 @@
package org.openjena.fuseki.migrate;
-import java.io.InputStream;
+import java.io.InputStream ;
-import com.hp.hpl.jena.graph.Factory;
-import com.hp.hpl.jena.graph.Graph;
-import com.hp.hpl.jena.shared.NotFoundException;
-
-import com.hp.hpl.jena.rdf.model.Model;
-import com.hp.hpl.jena.rdf.model.ModelFactory;
-import com.hp.hpl.jena.rdf.model.RDFReader;
-
-import com.hp.hpl.jena.util.FileManager;
-import com.hp.hpl.jena.util.FileUtils;
+import org.openjena.atlas.lib.Sink ;
+import org.openjena.fuseki.Fuseki ;
+import org.openjena.riot.Lang ;
+import org.openjena.riot.RiotException ;
+import org.openjena.riot.RiotReader ;
+import org.openjena.riot.lang.LangRIOT ;
+import org.openjena.riot.lang.SinkTriplesToGraph ;
+
+import com.hp.hpl.jena.graph.Factory ;
+import com.hp.hpl.jena.graph.Graph ;
+import com.hp.hpl.jena.graph.Triple ;
+import com.hp.hpl.jena.rdf.model.Model ;
+import com.hp.hpl.jena.rdf.model.ModelFactory ;
+import com.hp.hpl.jena.rdf.model.RDFReader ;
+import com.hp.hpl.jena.shared.NotFoundException ;
+import com.hp.hpl.jena.util.FileManager ;
+import com.hp.hpl.jena.util.FileUtils ;
/** A packaging of code to do a controlled read of a graph or model */
@@ -40,52 +47,50 @@ public class GraphLoadUtils
public static Model readModel(String uri, int limit)
{
- return readModel(uri, limit, FileUtils.guessLang(uri)) ;
- }
-
- public static Model readModel(String uri, int limit, String syntax)
- {
Graph g = Factory.createGraphMem() ;
- return readUtil(g, uri, limit, syntax) ;
+ readUtil(g, uri, limit) ;
+ return ModelFactory.createModelForGraph(g) ;
}
public static void loadModel(Model model, String uri, int limit)
{
- loadModel(model, uri, limit, null) ;
- }
-
- public static void loadModel(Model model, String uri, int limit, String syntax)
- {
Graph g = model.getGraph() ;
- readUtil(g, uri, limit, syntax) ;
+ readUtil(g, uri, limit) ;
}
// ---- Graph level
public static Graph readGraph(String uri, int limit)
{
- return readGraph(uri, limit, FileUtils.guessLang(uri)) ;
- }
-
- public static Graph readGraph(String uri, int limit, String syntax)
- {
Graph g = Factory.createGraphMem() ;
- Model m = readUtil(g, uri, limit, syntax) ;
- return m.getGraph() ;
+ readUtil(g, uri, limit) ;
+ return g ;
}
public static void loadGraph(Graph g, String uri, int limit)
{
- loadGraph(g, uri, limit, FileUtils.guessLang(uri)) ;
+ readUtil(g, uri, limit) ;
}
-
- public static void loadGraph(Graph g, String uri, int limit, String syntax)
+
+ // ** Worker.
+ private static void readUtil(Graph graph, String uri, int limit)
{
- Model m = readUtil(g, uri, limit, syntax) ;
+ Lang lang = Lang.guess(uri) ;
+
+ Sink<Triple> sink = new SinkTriplesToGraph(graph) ;
+ sink = new SinkLimited<Triple>(sink, limit) ;
+
+ // TODO Conneg
+ // WebReader.
+ InputStream input = Fuseki.webFileManager.open(uri) ;
+
+ LangRIOT parser = RiotReader.createParserTriples(input, lang, uri, sink) ;
+ try {
+ parser.parse() ;
+ } catch (RiotException ex) { throw ex ; }
}
-
- private static Model readUtil(Graph graph, String uri, int limit, String syntax)
+ private static Model readUtil1(Graph graph, String uri, int limit, String syntax)
{
// Use the mapped uri as the syntax hint.
{
Added: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java?rev=1153293&view=auto
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java (added)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java Tue Aug 2 22:28:11 2011
@@ -0,0 +1,47 @@
+/**
+ * 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.openjena.fuseki.migrate;
+
+import org.openjena.atlas.lib.Sink ;
+import org.openjena.atlas.lib.SinkWrapper ;
+import org.openjena.riot.RiotException ;
+
+public class SinkLimited<T> extends SinkWrapper<T>
+{
+ private long count = 0 ;
+private long limit ;
+
+ public SinkLimited(Sink<T> output, long limit)
+ {
+ super(output) ;
+ this.limit = limit ;
+ }
+
+ @Override
+ public void send(T thing)
+ {
+ count++ ;
+ if ( count > limit )
+ throw new RiotException("Limit "+limit+" exceeded") ;
+ super.send(thing) ;
+ }
+
+ public long getCount() { return count ; }
+}
+
Propchange: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/migrate/SinkLimited.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/server/SPARQLServer.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/server/SPARQLServer.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/server/SPARQLServer.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/server/SPARQLServer.java Tue Aug 2 22:28:11 2011
@@ -206,7 +206,7 @@ public class SPARQLServer
addServlet(context, validateIRI, validationRoot+"/iri") ;
addServlet(context, dumpService, "/dump") ;
// general query processor.
- //addServlet(context, generalQueryService, sparqlProcessor) ;
+ addServlet(context, generalQueryService, sparqlProcessor) ;
}
if ( installManager )
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/HttpAction.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/HttpAction.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/HttpAction.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/HttpAction.java Tue Aug 2 22:28:11 2011
@@ -58,7 +58,7 @@ class HttpAction
{
this.id = id ;
this.dsg = dsg ;
- this.lock = dsg.getLock() ;
+ this.lock = ( dsg != null ) ? dsg.getLock() : null ;
this.request = request ;
this.response = response ;
this.verbose = verbose ;
@@ -91,6 +91,8 @@ class HttpAction
private void enter(DatasetGraph dsg, Lock lock, boolean readLock)
{
+ if ( lock == null && dsg == null )
+ return ;
if ( lock == null )
lock = dsg.getLock() ;
if ( lock == null )
@@ -100,6 +102,9 @@ class HttpAction
private void leave(DatasetGraph dsg, Lock lock, boolean readLock)
{
+ if ( lock == null && dsg == null )
+ return ;
+
if ( lock == null )
lock = dsg.getLock() ;
if ( lock == null )
@@ -110,6 +115,5 @@ class HttpAction
public void sync()
{
SystemARQ.sync(dsg) ;
- //TDB.sync(dsg) ;
}
}
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_Query.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_Query.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_Query.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_Query.java Tue Aug 2 22:28:11 2011
@@ -114,22 +114,6 @@ public abstract class SPARQL_Query exten
error(HttpSC.UNSUPPORTED_MEDIA_TYPE_415, "Bad content type: "+incoming) ;
}
- // (1) Param to constructor.
- // (2) DRY : to super class.
- static String[] tails = { HttpNames.ServiceQuery, HttpNames.ServiceQueryAlt } ;
-
- @Override
- protected String mapRequestToDataset(String uri)
- {
- for ( String tail : tails )
- {
- String x = mapRequestToDataset(uri, tail) ;
- if ( x != null )
- return x ;
- }
- return uri ;
- }
-
// // All the params we support
// private static String[] params_ = { paramQuery, paramDefaultGraphURI, paramNamedGraphURI,
// paramQueryRef,
@@ -220,9 +204,6 @@ public abstract class SPARQL_Query exten
}
validateQuery(action, query) ;
-
- if ( query.hasDatasetDescription() )
- errorBadRequest("Query has FROM/FROM NAMED") ;
// Assumes finished whole thing by end of sendResult.
action.beginRead() ;
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryDataset.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryDataset.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryDataset.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryDataset.java Tue Aug 2 22:28:11 2011
@@ -46,22 +46,20 @@ public class SPARQL_QueryDataset extends
public SPARQL_QueryDataset()
{ this(false) ; }
-
-// // (1) Param to constructor.
-// // (2) DRY : to super class.
-// static String[] tails = { HttpNames.ServiceQuery, HttpNames.ServiceQueryAlt } ;
-//
-// @Override
-// protected String mapRequestToDataset(String uri)
-// {
-// for ( String tail : tails )
-// {
-// String x = mapRequestToDataset(uri, tail) ;
-// if ( x != null )
-// return x ;
-// }
-// return uri ;
-// }
+
+ static String[] tails = { HttpNames.ServiceQuery, HttpNames.ServiceQueryAlt } ;
+
+ @Override
+ protected String mapRequestToDataset(String uri)
+ {
+ for ( String tail : tails )
+ {
+ String x = mapRequestToDataset(uri, tail) ;
+ if ( x != null )
+ return x ;
+ }
+ return uri ;
+ }
// All the params we support
private static String[] params_ = { paramQuery,
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryGeneral.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryGeneral.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryGeneral.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_QueryGeneral.java Tue Aug 2 22:28:11 2011
@@ -18,6 +18,7 @@
package org.openjena.fuseki.servlets;
+import static org.openjena.fuseki.Fuseki.webFileManager ;
import static org.openjena.fuseki.HttpNames.paramAccept ;
import static org.openjena.fuseki.HttpNames.paramCallback ;
import static org.openjena.fuseki.HttpNames.paramDefaultGraphURI ;
@@ -29,9 +30,8 @@ import static org.openjena.fuseki.HttpNa
import static org.openjena.fuseki.HttpNames.paramQueryRef ;
import static org.openjena.fuseki.HttpNames.paramStyleSheet ;
-import java.util.ArrayList ;
import java.util.Arrays ;
-import java.util.Enumeration ;
+import java.util.Collections ;
import java.util.HashSet ;
import java.util.List ;
import java.util.Set ;
@@ -48,21 +48,14 @@ import com.hp.hpl.jena.query.DatasetFact
import com.hp.hpl.jena.query.Query ;
import com.hp.hpl.jena.rdf.model.Model ;
import com.hp.hpl.jena.rdf.model.ModelFactory ;
-import com.hp.hpl.jena.util.FileManager ;
-
-// UNFINISHED
public class SPARQL_QueryGeneral extends SPARQL_Query
{
- final FileManager fileManager ;
final int MaxTriples = 100*1000 ;
public SPARQL_QueryGeneral(boolean verbose)
{
super(verbose) ;
- fileManager = new FileManager() ;
- // Only know how to handle http URLs
- fileManager.addLocatorURL() ;
}
public SPARQL_QueryGeneral()
@@ -100,23 +93,27 @@ public class SPARQL_QueryGeneral extends
}
@Override
+ protected String mapRequestToDataset(String uri)
+ { return null ; }
+
+ @Override
protected Dataset decideDataset(HttpActionQuery action, Query query, String queryStringLog)
{
- // Dataset comes from:
- // default-graph-uri/named-graph-uri
- // FROM/FROM NAMED.
-
- errorNotImplemented("General SPARQL query with dataset description") ;
- return null ;
+ Dataset ds = datasetFromProtocol(action.request) ;
+ if ( ds == null )
+ ds = datasetFromQuery(query) ;
+ if ( ds == null )
+ errorBadRequest("No dataset description in protocol request or in the query string") ;
+ return ds ;
}
private boolean datasetInProtocol(HttpServletRequest request)
{
- String d = request.getHeader(paramDefaultGraphURI) ;
+ String d = request.getParameter(paramDefaultGraphURI) ;
if ( d != null && !d.equals("") )
return true ;
- List<String> n = toStrList(request.getHeaders(paramNamedGraphURI)) ;
+ List<String> n = toStrList(request.getParameterValues(paramNamedGraphURI)) ;
if ( n != null && n.size() > 0 )
return true ;
return false ;
@@ -124,11 +121,21 @@ public class SPARQL_QueryGeneral extends
protected Dataset datasetFromProtocol(HttpServletRequest request)
{
+ List<String> graphURLs = toStrList(request.getParameterValues(paramDefaultGraphURI)) ;
+ List<String> namedGraphs = toStrList(request.getParameterValues(paramNamedGraphURI)) ;
+ return datasetFromDescription(graphURLs, namedGraphs) ;
+ }
+
+ protected Dataset datasetFromQuery(Query query)
+ {
+ List<String> graphURLs = query.getGraphURIs() ;
+ List<String> namedGraphs = query.getNamedGraphURIs() ;
+ return datasetFromDescription(graphURLs, namedGraphs) ;
+ }
+
+ protected Dataset datasetFromDescription(List<String> graphURLs, List<String> namedGraphs)
+ {
try {
-
- List<String> graphURLs = toStrList(request.getHeaders(paramDefaultGraphURI)) ;
- List<String> namedGraphs = toStrList(request.getHeaders(paramNamedGraphURI)) ;
-
graphURLs = removeEmptyValues(graphURLs) ;
namedGraphs = removeEmptyValues(namedGraphs) ;
@@ -185,7 +192,7 @@ public class SPARQL_QueryGeneral extends
continue ;
}
try {
- Model model2 = fileManager.loadModel(uri) ;
+ Model model2 = webFileManager.loadModel(uri) ;
log.info("Load (named) "+uri) ;
dataset.addNamedModel(uri, model2) ;
} catch (Exception ex)
@@ -210,15 +217,11 @@ public class SPARQL_QueryGeneral extends
}
- private List<String> toStrList(Enumeration<?> enumeration)
+ private List<String> toStrList(String[] array)
{
- List<String> x = new ArrayList<String>() ;
- for ( ; enumeration.hasMoreElements() ; )
- {
- String str = (String)enumeration.nextElement() ;
- x.add(str) ;
- }
- return x ;
+ if ( array == null )
+ return Collections.emptyList() ;
+ return Arrays.asList(array) ;
}
private <T> List<T> removeEmptyValues(List<T> list)
Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_ServletBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_ServletBase.java?rev=1153293&r1=1153292&r2=1153293&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_ServletBase.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/openjena/fuseki/servlets/SPARQL_ServletBase.java Tue Aug 2 22:28:11 2011
@@ -78,14 +78,16 @@ public abstract class SPARQL_ServletBase
}
uri = mapRequestToDataset(uri) ;
- // Read only action.
- DatasetGraph dsg = DatasetRegistry.get().get(uri) ;
- if ( dsg == null )
+ DatasetGraph dsg = null ;
+ if ( uri != null )
{
- errorNotFound("No dataset for URI: "+uri) ;
- return ;
+ dsg = DatasetRegistry.get().get(uri) ;
+ if ( dsg == null )
+ {
+ errorNotFound("No dataset for URI: "+uri) ;
+ return ;
+ }
}
-
perform(id, dsg, request, response) ;
//serverlog.info(String.format("[%d] 200 Success", id)) ;
} catch (ActionErrorException ex)
@@ -179,6 +181,9 @@ public abstract class SPARQL_ServletBase
catch (IOException ex) { errorOccurred(ex) ; }
}
+ /** Map request to uri in the registry.
+ * null means no mapping done (passthrough).
+ */
protected abstract String mapRequestToDataset(String uri) ;
/** A possible implementation for mapRequestToDataset(String) */