This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jena.git
The following commit(s) were added to refs/heads/master by this push:
new 2bff144 JENA-1684: Insert server registrations into uploaded model.
new 33a24ad Merge pull request #543 from afs/upload-service-description
2bff144 is described below
commit 2bff14477f1c24444a5c19c4c29568414957b19e
Author: Andy Seaborne <[email protected]>
AuthorDate: Tue Mar 19 20:52:13 2019 +0000
JENA-1684: Insert server registrations into uploaded model.
---
.../jena/sparql/core/assembler/AssemblerUtils.java | 14 +++++++++-
.../org/apache/jena/fuseki/build/FusekiConfig.java | 10 +++++++-
.../jena-fuseki-core/testing/config-ds-1.ttl | 15 -----------
.../testing/config-ds-bad-name-1.ttl | 15 -----------
.../testing/config-ds-bad-name-2.ttl | 15 -----------
.../testing/config-ds-bad-name-3.ttl | 15 -----------
.../testing/config-ds-bad-name-4.ttl | 15 -----------
.../org/apache/jena/fuseki/mgt/ActionDatasets.java | 10 ++++----
.../java/org/apache/jena/fuseki/TestAdmin.java | 27 ++++++++++++++++---
.../jena-fuseki-webapp/testing/config-ds-inf.ttl | 30 ++++++++++++++++++++++
.../{config-ds-1.ttl => config-ds-plain.ttl} | 0
11 files changed, 80 insertions(+), 86 deletions(-)
diff --git
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
index b9293f4..19a33a7 100644
---
a/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
+++
b/jena-arq/src/main/java/org/apache/jena/sparql/core/assembler/AssemblerUtils.java
@@ -101,10 +101,22 @@ public class AssemblerUtils
spec = RDFDataMgr.loadModel(assemblerFile) ;
} catch (Exception ex)
{ throw new ARQException("Failed reading assembler description:
"+ex.getMessage()) ; }
- spec.add(modelExtras) ;
+ addRegistered(spec);
return spec ;
}
+ /** Add any extra information to the model.
+ * Such information includes registration of datasets (e.g. TDB1, TDB2)
+ * done by {@link #register} ({@link #registerDataset}, {@link
#registerModel}.
+ * It avoids directly modifying {@link Assembler#general}.
+ * @param model
+ * @return Model The same model after modification.
+ */
+ public static Model addRegistered(Model model) {
+ model.add(modelExtras) ;
+ return model ;
+ }
+
public static Object build(String assemblerFile, String typeURI) {
Resource type = ResourceFactory.createResource(typeURI) ;
return build(assemblerFile, type) ;
diff --git
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
index c42207b..b427f86 100644
---
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
+++
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/FusekiConfig.java
@@ -30,7 +30,10 @@ import java.nio.file.DirectoryStream ;
import java.nio.file.Files ;
import java.nio.file.Path ;
import java.nio.file.Paths ;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
import org.apache.jena.assembler.Assembler;
import org.apache.jena.assembler.JA ;
@@ -296,6 +299,7 @@ public class FusekiConfig {
/** Build a DatasetRef starting at Resource svc, having the services as
described by the descriptions. */
private static DataService buildDataService(Resource svc,
DatasetDescriptionRegistry dsDescMap) {
Resource datasetDesc = ((Resource)FusekiBuildLib.getOne(svc,
"fu:dataset")) ;
+
Dataset ds = getDataset(datasetDesc, dsDescMap);
// In case the assembler included ja:contents
@@ -342,6 +346,10 @@ public class FusekiConfig {
// Check if the description is in the model.
if ( !datasetDesc.hasProperty(RDF.type) )
throw new FusekiConfigException("No rdf:type for dataset " +
FusekiBuildLib.nodeLabel(datasetDesc)) ;
+
+ // Should have been done already. e.g.
ActionDatasets.execPostContainer,
+ // Assemblerutils.readAssemblerFile < FusekiServer.parseConfigFile.
+ //AssemblerUtils.addRegistered(datasetDesc.getModel());
ds = (Dataset)Assembler.general.open(datasetDesc) ;
}
// Some kind of check that it is "the same" dataset.
diff --git a/jena-fuseki2/jena-fuseki-core/testing/config-ds-1.ttl
b/jena-fuseki2/jena-fuseki-core/testing/config-ds-1.ttl
deleted file mode 100644
index 8e7a57b..0000000
--- a/jena-fuseki2/jena-fuseki-core/testing/config-ds-1.ttl
+++ /dev/null
@@ -1,15 +0,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 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 .
diff --git a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-1.ttl
b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-1.ttl
deleted file mode 100644
index 05640fd..0000000
--- a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-1.ttl
+++ /dev/null
@@ -1,15 +0,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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
-
-<#service1> rdf:type fuseki:Service ;
- # URI of the dataset -- http://host:port/ds
- fuseki:name "" ;
- fuseki:serviceQuery "sparql" ;
- fuseki:dataset <#emptyDataset> ;
- .
-
-<#emptyDataset> rdf:type ja:RDFDataset .
diff --git a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-2.ttl
b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-2.ttl
deleted file mode 100644
index 27df06b..0000000
--- a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-2.ttl
+++ /dev/null
@@ -1,15 +0,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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
-
-<#service1> rdf:type fuseki:Service ;
- # URI of the dataset -- http://host:port/ds
- fuseki:name " " ;
- fuseki:serviceQuery "sparql" ;
- fuseki:dataset <#emptyDataset> ;
- .
-
-<#emptyDataset> rdf:type ja:RDFDataset .
diff --git a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-3.ttl
b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-3.ttl
deleted file mode 100644
index 19caef1..0000000
--- a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-3.ttl
+++ /dev/null
@@ -1,15 +0,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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
-
-<#service1> rdf:type fuseki:Service ;
- # URI of the dataset -- http://host:port/ds
- fuseki:name "ABC DEF" ;
- fuseki:serviceQuery "sparql" ;
- fuseki:dataset <#emptyDataset> ;
- .
-
-<#emptyDataset> rdf:type ja:RDFDataset .
diff --git a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-4.ttl
b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-4.ttl
deleted file mode 100644
index f57840e..0000000
--- a/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-4.ttl
+++ /dev/null
@@ -1,15 +0,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 ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
-
-<#service1> rdf:type fuseki:Service ;
- # URI of the dataset -- http://host:port/ds
- fuseki:name "/ABC DEF " ;
- fuseki:serviceQuery "sparql" ;
- fuseki:dataset <#emptyDataset> ;
- .
-
-<#emptyDataset> rdf:type ja:RDFDataset .
diff --git
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
index 1f6e0d2..920d20a 100644
---
a/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
+++
b/jena-fuseki2/jena-fuseki-webapp/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
@@ -76,6 +76,7 @@ import org.apache.jena.riot.system.StreamRDFLib ;
import org.apache.jena.shared.uuid.JenaUUID ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.Quad ;
+import org.apache.jena.sparql.core.assembler.AssemblerUtils;
import org.apache.jena.sparql.util.FmtUtils ;
import org.apache.jena.tdb.transaction.DatasetGraphTransaction ;
import org.apache.jena.update.UpdateAction ;
@@ -133,11 +134,8 @@ public class ActionDatasets extends ActionContainerItem {
boolean hasParams =
action.request.getParameterNames().hasMoreElements();
- if ( ct == null && ! hasParams ) {
+ if ( ct == null && ! hasParams )
ServletOps.errorBadRequest("Bad request - Content-Type or both
parameters dbName and dbType required");
- // Or do "GET over POST"
- //return execGetContainer(action);
- }
boolean committed = false ;
// Also acts as a concurrency lock
@@ -157,6 +155,8 @@ public class ActionDatasets extends ActionContainerItem {
else
assemblerFromBody(action, dest) ;
+ AssemblerUtils.addRegistered(model);
+
// ----
// Keep a persistent copy immediately. This is not used for
// anything other than being "for the record".
@@ -415,7 +415,7 @@ public class ActionDatasets extends ActionContainerItem {
String dbType = action.getRequest().getParameter(paramDatasetType) ;
String dbName = action.getRequest().getParameter(paramDatasetName) ;
if ( StringUtils.isBlank(dbType) || StringUtils.isBlank(dbName) )
- ServletOps.errorBadRequest("Required parameters: dbName and
dbType");
+ ServletOps.errorBadRequest("Received HTML form. Both parameters
'dbName' and 'dbType' required");
Map<String, String> params = new HashMap<>() ;
diff --git
a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TestAdmin.java
b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TestAdmin.java
index 8ce0947..2bc03ec 100644
---
a/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TestAdmin.java
+++
b/jena-fuseki2/jena-fuseki-webapp/src/test/java/org/apache/jena/fuseki/TestAdmin.java
@@ -53,8 +53,9 @@ import org.junit.Test ;
public class TestAdmin extends AbstractFusekiTest {
// Name of the dataset in the assembler file.
- static String dsTest = "test-ds2" ;
- static String fileBase = "testing/" ;
+ static String dsTest = "test-ds2" ;
+ static String dsTestInf = "test-ds4" ;
+ static String fileBase = "testing/" ;
// --- Ping
@@ -130,7 +131,7 @@ public class TestAdmin extends AbstractFusekiTest {
@Test public void add_delete_dataset_2() {
checkNotThere(dsTest) ;
- File f = new File(fileBase+"config-ds-1.ttl") ;
+ File f = new File(fileBase+"config-ds-plain.ttl") ;
{
org.apache.http.entity.ContentType ct =
org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+";
charset="+WebContent.charsetUTF8) ;
HttpEntity e = new FileEntity(f, ct) ;
@@ -161,6 +162,20 @@ public class TestAdmin extends AbstractFusekiTest {
deleteDataset(dsTest) ;
}
+ @Test public void add_delete_dataset_4() throws Exception {
+ checkNotThere(dsTest) ;
+ checkNotThere(dsTestInf) ;
+ addTestDatasetInf() ;
+ checkNotThere(dsTest) ;
+ checkExists(dsTestInf) ;
+
+ deleteDataset(dsTestInf) ;
+ checkNotThere(dsTestInf) ;
+ addTestDatasetInf() ;
+ checkExists(dsTestInf) ;
+ deleteDataset(dsTestInf) ;
+ }
+
@Test public void add_error_1() {
FusekiTest.execWithHttpException(HttpSC.BAD_REQUEST_400,
()->
addTestDataset(fileBase+"config-ds-bad-name-1.ttl")) ;
@@ -322,7 +337,11 @@ public class TestAdmin extends AbstractFusekiTest {
// -- Add
private static void addTestDataset() {
- addTestDataset(fileBase+"config-ds-1.ttl") ;
+ addTestDataset(fileBase+"config-ds-plain.ttl") ;
+ }
+
+ private static void addTestDatasetInf() {
+ addTestDataset(fileBase+"config-ds-inf.ttl") ;
}
private static void addTestDataset(String filename) {
diff --git a/jena-fuseki2/jena-fuseki-webapp/testing/config-ds-inf.ttl
b/jena-fuseki2/jena-fuseki-webapp/testing/config-ds-inf.ttl
new file mode 100644
index 0000000..b75cf18
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-webapp/testing/config-ds-inf.ttl
@@ -0,0 +1,30 @@
+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#>
+PREFIX tdb2: <http://jena.apache.org/2016/tdb#>
+
+<#service2> rdf:type fuseki:Service ;
+ fuseki:name "test-ds4" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#infDataset> ;
+ .
+
+<#infDataset> rdf:type ja:RDFDataset ;
+ ja:defaultGraph <#infGraph> ;
+ .
+
+<#infGraph> a ja:InfModel;
+ ja:reasoner [ja:reasonerURL
<http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>] ;
+ ja:baseModel <#tdb_graph> ;
+ .
+
+<#tdb_graph> rdf:type tdb2:GraphTDB ;
+ tdb2:dataset <#tdb_dataset> ;
+ .
+
+<#tdb_dataset> rdf:type tdb2:DatasetTDB ;
+ tdb2:location "--mem--" ;
+ .
diff --git a/jena-fuseki2/jena-fuseki-webapp/testing/config-ds-1.ttl
b/jena-fuseki2/jena-fuseki-webapp/testing/config-ds-plain.ttl
similarity index 100%
rename from jena-fuseki2/jena-fuseki-webapp/testing/config-ds-1.ttl
rename to jena-fuseki2/jena-fuseki-webapp/testing/config-ds-plain.ttl