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

Reply via email to