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 2015/12/15 14:01:57 UTC
jena git commit: JENA-1088: Server-side testing of create dataset name
Repository: jena
Updated Branches:
refs/heads/master 1f25b4d78 -> b177db208
JENA-1088: Server-side testing of create dataset name
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b177db20
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b177db20
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b177db20
Branch: refs/heads/master
Commit: b177db20843e92151ff76b3dac8560269f69b188
Parents: 1f25b4d
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Dec 15 13:00:03 2015 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Dec 15 13:00:03 2015 +0000
----------------------------------------------------------------------
.../apache/jena/fuseki/mgt/ActionDatasets.java | 45 ++++++++-------
.../java/org/apache/jena/fuseki/TestAdmin.java | 60 +++++++++++++-------
.../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 +++++
6 files changed, 125 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
index 587d22d..217cb7f 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
@@ -166,28 +166,31 @@ public class ActionDatasets extends ActionContainerItem {
if ( object.getDatatype() != null && ! object.getDatatype().equals(XSDDatatype.XSDstring) )
action.log.warn(format("[%d] Service name '%s' is not a string", action.id, FmtUtils.stringForRDFNode(object)));
- String datasetName = object.getLexicalForm() ;
-
- // ---- Check and canonicalize name.
- if ( datasetName.isEmpty() ) {
- action.log.error(format("[%d] Empty dataset name", action.id, datasetName)) ;
- ServletOps.error(HttpSC.BAD_REQUEST_400, "Empty dataset name") ;
- }
- if ( StringUtils.isBlank(datasetName) ) {
- action.log.error(format("[%d] Whitespace dataset name: '%s'", action.id, datasetName)) ;
- ServletOps.error(HttpSC.BAD_REQUEST_400, format("Whitespace dataset name: '%s'", datasetName)) ;
+ String datasetPath ;
+ {
+ // As provided.
+ String datasetNameOrig = object.getLexicalForm() ;
+
+ // ---- Check and canonicalize name.
+ if ( datasetNameOrig.isEmpty() )
+ ServletOps.error(HttpSC.BAD_REQUEST_400, "Empty dataset name") ;
+ if ( StringUtils.isBlank(datasetNameOrig) )
+ // Get logged
+ ServletOps.error(HttpSC.BAD_REQUEST_400, format("Whitespace dataset name: '%s'", datasetNameOrig)) ;
+
+ String datasetNameTrimmed = datasetNameOrig.trim() ;
+ if ( ! datasetNameTrimmed.equals(datasetNameOrig) )
+ action.log.warn(format("[%d] Trimming white space: '%s' -> '%s'", action.id, datasetNameOrig, datasetNameTrimmed)) ;
+ if ( datasetNameTrimmed.contains(" ") )
+ ServletOps.error(HttpSC.BAD_REQUEST_400, format("Bad dataset name (contains spaces) '%s'",datasetNameOrig)) ;
+ if ( datasetNameTrimmed.equals("/") )
+ ServletOps.error(HttpSC.BAD_REQUEST_400, format("Bad dataset name '%s'",datasetNameOrig)) ;
+
+ datasetPath = DataAccessPoint.canonical(datasetNameTrimmed) ;
}
-
- String datasetName2 = datasetName ;
- datasetName = datasetName.trim() ;
- if ( ! datasetName2.equals(datasetName) )
- action.log.warn(format("[%d] Trimming white space: '%s'", action.id, datasetName2)) ;
- if ( datasetName.contains(" ") )
- ServletOps.error(HttpSC.BAD_REQUEST_400, format("Bad dataset name (contains spaces) '%s'",datasetName)) ;
-
- String datasetPath = DataAccessPoint.canonical(datasetName) ;
action.log.info(format("[%d] Create database : name = %s", action.id, datasetPath)) ;
-
+// System.err.println("'"+datasetPath+"'") ;
+// DataAccessPointRegistry.get().forEach((s,dap)->System.err.println("'"+s+"'"));
// ---- Check whether it already exists
if ( DataAccessPointRegistry.get().isRegistered(datasetPath) )
// And abort.
@@ -196,7 +199,7 @@ public class ActionDatasets extends ActionContainerItem {
configFile = FusekiEnv.generateConfigurationFilename(datasetPath) ;
List<String> existing = FusekiEnv.existingConfigurationFile(datasetPath) ;
if ( ! existing.isEmpty() )
- ServletOps.error(HttpSC.CONFLICT_409, "Configuration file for "+datasetPath+" already exists") ;
+ ServletOps.error(HttpSC.CONFLICT_409, "Configuration file for '"+datasetPath+"' already exists") ;
// Write to configuration directory.
try ( OutputStream outCopy = IO.openOutputFile(configFile) ) {
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java
index 2a2e46a..bc02309 100644
--- a/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java
+++ b/jena-fuseki2/jena-fuseki-core/src/test/java/org/apache/jena/fuseki/TestAdmin.java
@@ -55,6 +55,7 @@ public class TestAdmin extends AbstractFusekiTest {
// Name of the dataset in the assembler file.
static String dsTest = "test-ds2" ;
+ 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("testing/config-ds-1.ttl") ;
+ File f = new File(fileBase+"config-ds-1.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,26 @@ public class TestAdmin extends AbstractFusekiTest {
deleteDataset(dsTest) ;
}
+ @Test public void add_error_1() {
+ FusekiTest.execWithHttpException(HttpSC.BAD_REQUEST_400,
+ ()-> addTestDataset(fileBase+"config-ds-bad-name-1.ttl")) ;
+ }
+
+ @Test public void add_error_2() {
+ FusekiTest.execWithHttpException(HttpSC.BAD_REQUEST_400,
+ ()-> addTestDataset(fileBase+"config-ds-bad-name-2.ttl")) ;
+ }
+
+ @Test public void add_error_3() {
+ FusekiTest.execWithHttpException(HttpSC.BAD_REQUEST_400,
+ ()-> addTestDataset(fileBase+"config-ds-bad-name-3.ttl")) ;
+ }
+
+ @Test public void add_error_4() {
+ FusekiTest.execWithHttpException(HttpSC.BAD_REQUEST_400,
+ ()-> addTestDataset(fileBase+"config-ds-bad-name-4.ttl")) ;
+ }
+
@Test public void delete_dataset_1() {
String name = "NoSuchDataset" ;
FusekiTest.exec404( ()-> execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ) ;
@@ -294,26 +315,29 @@ public class TestAdmin extends AbstractFusekiTest {
}
private static JsonValue getDatasetDescription(String dsName) {
- try ( TypedInputStream in = execHttpGet(urlRoot+"$/"+opDatasets+"/"+dsName) ) {
- assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType()) ;
- JsonValue v = JSON.parse(in) ;
- return v ;
+ try (TypedInputStream in = execHttpGet(urlRoot + "$/" + opDatasets + "/" + dsName)) {
+ assertEqualsIgnoreCase(WebContent.contentTypeJSON, in.getContentType());
+ JsonValue v = JSON.parse(in);
+ return v;
+ }
}
-}
-// -- Add
+ // -- Add
-private static void addTestDataset() {
- File f = new File("testing/config-ds-1.ttl") ;
- org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ;
- HttpEntity e = new FileEntity(f, ct) ;
- execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
-}
-
-private static void deleteDataset(String name) {
- execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ;
-}
+ private static void addTestDataset() {
+ addTestDataset(fileBase+"config-ds-1.ttl") ;
+ }
+
+ private static void addTestDataset(String filename) {
+ File f = new File(filename) ;
+ org.apache.http.entity.ContentType ct = org.apache.http.entity.ContentType.parse(WebContent.contentTypeTurtle+"; charset="+WebContent.charsetUTF8) ;
+ HttpEntity e = new FileEntity(f, ct) ;
+ execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
+ }
+ private static void deleteDataset(String name) {
+ execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ;
+ }
static class JsonResponseHandler implements HttpResponseHandler {
@@ -332,8 +356,6 @@ private static void deleteDataset(String name) {
}
-
-
private String execSleepTask(String name, int millis) {
String url = urlRoot+"$/sleep" ;
if ( name != null ) {
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-1.ttl
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..05640fd
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-1.ttl
@@ -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 "" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#emptyDataset> ;
+ .
+
+<#emptyDataset> rdf:type ja:RDFDataset .
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-2.ttl
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..27df06b
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-2.ttl
@@ -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 " " ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#emptyDataset> ;
+ .
+
+<#emptyDataset> rdf:type ja:RDFDataset .
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-3.ttl
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..19caef1
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-3.ttl
@@ -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 "ABC DEF" ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#emptyDataset> ;
+ .
+
+<#emptyDataset> rdf:type ja:RDFDataset .
http://git-wip-us.apache.org/repos/asf/jena/blob/b177db20/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-4.ttl
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..f57840e
--- /dev/null
+++ b/jena-fuseki2/jena-fuseki-core/testing/config-ds-bad-name-4.ttl
@@ -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 "/ABC DEF " ;
+ fuseki:serviceQuery "sparql" ;
+ fuseki:dataset <#emptyDataset> ;
+ .
+
+<#emptyDataset> rdf:type ja:RDFDataset .