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 22:55:03 UTC

svn commit: r1552952 - in /jena/branches/jena-fuseki-new-ui: pages/admin/ src/main/java/org/apache/jena/fuseki/mgt/ src/main/java/org/apache/jena/fuseki/servlets/ src/test/java/org/apache/jena/fuseki/

Author: andy
Date: Sat Dec 21 21:55:03 2013
New Revision: 1552952

URL: http://svn.apache.org/r1552952
Log:
Test - dataset creation by server template.

Modified:
    jena/branches/jena-fuseki-new-ui/pages/admin/data-management.html
    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/servlets/Upload.java
    jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java

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=1552952&r1=1552951&r2=1552952&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 21:55:03 2013
@@ -84,7 +84,7 @@
 
           <div class="form-group">
             <label for="inputDatabase">Database Name</label>
-            <div>
+            <div style="width: 300px">
               <input type="text" class="form-control" name="dbName" id="dbName" placeholder="Database name">
             </div>
           </div>
@@ -92,21 +92,29 @@
           <div class="checkbox">
             <label>
               <input type="radio" name="dbType" value="mem" checked>
-              In-Memory
+              In-Memory (restored on restart but changes lost).
             </label>
           </div>
           <div class="checkbox">
             <label>
               <input type="radio" name="dbType" value="tdb">
-              Persistent
+              Persistent (changes persist across system restarts)
             </label>
           </div>
           <button type="submit" class="btn btn-default">Create</button>
         </form>
+        <hr/>
+        <h2>Create database (from Assembler Description)</h2>
+        <!-- From assembler -->
+        <form action="/$/datasets" enctype="multipart/form-data" method="post" role="form">
+          <div class="form-group">
+             Database assembler description file: <input type="file" name="UNSET" size="40"><br/>
+          </div>
+          <button type="submit" class="btn btn-default">Create</button>
+        </form>
 
       </div>
 
-
       <hr/>
 
       <!--

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=1552952&r1=1552951&r2=1552952&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 21:55:03 2013
@@ -44,6 +44,7 @@ import org.apache.jena.fuseki.server.* ;
 import org.apache.jena.fuseki.servlets.ActionLib ;
 import org.apache.jena.fuseki.servlets.HttpAction ;
 import org.apache.jena.fuseki.servlets.ServletOps ;
+import org.apache.jena.fuseki.servlets.Upload ;
 import org.apache.jena.riot.* ;
 import org.apache.jena.riot.lang.LangRIOT ;
 import org.apache.jena.riot.system.ErrorHandler ;
@@ -69,11 +70,6 @@ import com.hp.hpl.jena.update.UpdateRequ
 import com.hp.hpl.jena.util.FileUtils ;
 
 public class ActionDatasets extends ActionCtl {
-    // XXX ActionContainerItem
-    
-    // XXX DatasetRef to include UUID : see execPostDataset
-    // DatasetRef ref = processService(s) ;
-    //   Needs to do the state.
     
     private static Dataset system = SystemState.getDataset() ;
     private static DatasetGraphTransaction systemDSG = SystemState.getDatasetGraph() ; 
@@ -165,7 +161,8 @@ public class ActionDatasets extends Acti
     }
     
     // XXX Split contained and per-dataset operations into separate servlets? 
-    
+    // XXX ActionContainerItem
+
     // ---- POST 
     
     // POST /$/datasets/ -- to the container -> register new dataset
@@ -218,6 +215,8 @@ public class ActionDatasets extends Acti
 
             if ( WebContent.isHtmlForm(ct) )
                 assemblerFromForm(action, dest) ;
+            else if ( WebContent.isMultiPartForm(ct) )
+                assemblerFromUpload(action, dest) ;
             else
                 assemblerFromBody(action, dest) ;
             
@@ -244,12 +243,10 @@ 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) ) {
+            if ( DatasetRegistry.get().isRegistered(datasetPath) )
                 // And abort.
                 ServletOps.error(HttpSC.CONFLICT_409, "Name already registered "+datasetName) ;
-            }
                 
             model.removeAll(null, pStatus, null) ;
             model.add(subject, pStatus, FusekiVocab.stateActive) ;
@@ -257,10 +254,15 @@ public class ActionDatasets extends Acti
             // Need to be in Resource space at this point.
             DatasetRef dsRef = FusekiConfig.processService(subject) ;
             X_Config.registerDataset(datasetPath, dsRef) ;
+            action.getResponse().setContentType(WebContent.contentTypeTextPlain); 
+            ServletOutputStream out = action.getResponse().getOutputStream() ;
+            out.println("That went well") ;
+            ServletOps.success(action) ;
             system.commit();
             committed = true ;
-            ServletOps.success(action) ;
-        } finally { 
+            
+        } catch (IOException ex) { IO.exception(ex); }
+        finally { 
             if ( ! committed ) system.abort() ; 
             system.end() ; 
         }
@@ -300,6 +302,10 @@ public class ActionDatasets extends Acti
 
     // ---- DELETE
 
+    private void assemblerFromUpload(HttpAction action, StreamRDF dest) {
+        Upload.fileUploadWorker(action, dest, true);
+    }
+
     protected void execDelete(HttpAction action) {
         // Does not exist?
         String name = action.dsRef.name ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/Upload.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/Upload.java?rev=1552952&r1=1552951&r2=1552952&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/Upload.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/servlets/Upload.java Sat Dec 21 21:55:03 2013
@@ -39,7 +39,7 @@ public class Upload {
     public static void incomingData(HttpAction action, StreamRDF dest, boolean isGraph) {
         ContentType ct = FusekiLib.getContentType(action) ;
          
-        if ( WebContent.contentTypeMultiFormData.equalsIgnoreCase(ct.getContentType()) ) {
+        if ( WebContent.contentTypeMultipartFormData.equalsIgnoreCase(ct.getContentType()) ) {
             fileUploadWorker(action, dest, isGraph) ;
             return ;
         }

Modified: jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java?rev=1552952&r1=1552951&r2=1552952&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/test/java/org/apache/jena/fuseki/TestAdmin.java Sat Dec 21 21:55:03 2013
@@ -29,9 +29,14 @@ import static org.apache.jena.riot.web.H
 
 import java.io.File ;
 import java.io.IOException ;
+import java.util.ArrayList ;
+import java.util.List ;
 
 import org.apache.http.HttpEntity ;
+import org.apache.http.NameValuePair ;
+import org.apache.http.client.entity.UrlEncodedFormEntity ;
 import org.apache.http.entity.FileEntity ;
+import org.apache.http.message.BasicNameValuePair ;
 import org.apache.jena.atlas.io.IO ;
 import org.apache.jena.atlas.json.JSON ;
 import org.apache.jena.atlas.json.JsonArray ;
@@ -52,8 +57,6 @@ public class TestAdmin extends BaseTest 
     
     // Name of the dataset in the assembler file.
     static String dsTest = "test-ds2" ;
-
-    
     
     @BeforeClass
     public static void beforeClass() {
@@ -99,12 +102,12 @@ public class TestAdmin extends BaseTest 
     }
 
     // Specific dataset
-    @Test public void list_datasets_5() {
+    @Test public void list_datasets_3() {
         checkExists(datasetPath) ;
     }
     
     // Specific dataset
-    @Test public void list_datasets_6() {
+    @Test public void list_datasets_4() {
         try {
             TypedInputStream in = execHttpGet(ServerTest.urlRoot+"$/"+opDatasets+"/does-not-exist") ;
         } catch (HttpException ex) {
@@ -113,7 +116,7 @@ public class TestAdmin extends BaseTest 
     }
     
     // Specific dataset
-    @Test public void list_datasets_7() {
+    @Test public void list_datasets_5() {
         JsonValue v = execGetJSON(urlRoot+"$/"+opDatasets+datasetPath) ;
         checkJsonDatasetsOne(v.getAsObject()) ;
     }
@@ -127,8 +130,8 @@ public class TestAdmin extends BaseTest 
         execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
     }
     
-    private static void deleteTestDataset() {
-        execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest) ;
+    private static void deleteDataset(String name) {
+        execHttpDelete(ServerTest.urlRoot+"$/"+opDatasets+"/"+name) ;
     }
 
     // Specific dataset
@@ -141,7 +144,7 @@ public class TestAdmin extends BaseTest 
         checkExists(dsTest) ;
         
         // Remove it.
-        deleteTestDataset() ;
+        deleteDataset(dsTest) ;
         checkNotThere(dsTest) ;
     }
 
@@ -166,6 +169,21 @@ public class TestAdmin extends BaseTest 
         }
         // Check exists.
         checkExists(dsTest) ;
+        deleteDataset(dsTest) ;
+    }
+    
+    @Test public void add_dataset_3() throws Exception {
+        String name = "MEMTEST" ;
+        //String args = "dbType=mem&dbName="+name ;
+        
+        List<NameValuePair> args = new ArrayList<NameValuePair>() ;
+        args.add(new BasicNameValuePair("dbType", "mem")) ;
+        args.add(new BasicNameValuePair("dbName", name)) ;
+        
+        HttpEntity e = new UrlEncodedFormEntity(args) ;
+        execHttpPost(ServerTest.urlRoot+"$/"+opDatasets, e) ;
+        checkExists(name) ;
+        deleteDataset(name) ;
     }
     
     // ---- Active/dormant.
@@ -180,13 +198,13 @@ public class TestAdmin extends BaseTest 
         execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest+"?state=active", null) ;
         
         checkExists(dsTest) ;
-        deleteTestDataset() ;
+        deleteDataset(dsTest) ;
     }
     
     @Test public void state_2() {
         addTestDataset() ;
         execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/"+dsTest+"?state=dormant", null) ;
-        deleteTestDataset() ;
+        deleteDataset(dsTest) ;
         checkNotThere(dsTest) ;
     }
 
@@ -195,6 +213,7 @@ public class TestAdmin extends BaseTest 
         try {
             execHttpPost(ServerTest.urlRoot+"$/"+opDatasets+"/DoesNotExist?state=dormant", null) ;
         } catch (HttpException ex) { assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()) ; }
+        deleteDataset(dsTest) ;
     }
     
     // ---- Backup
@@ -209,15 +228,19 @@ public class TestAdmin extends BaseTest 
     }
     
     @Test public void stats_2() {
+        addTestDataset() ;
         JsonValue v = execGetJSON(urlRoot+"$/"+opStats+datasetPath) ;
         checkJsonStatsAll(v); 
+        deleteDataset(dsTest) ;
     }
 
     @Test public void stats_3() {
+        addTestDataset() ;
         try {
             JsonValue v = execGetJSON(urlRoot+"$/"+opStats+"/DoesNotExist") ;
             checkJsonStatsAll(v);
         } catch (HttpException ex) { assertEquals(HttpSC.NOT_FOUND_404, ex.getResponseCode()); }
+        deleteDataset(dsTest) ;
     }
 
     // Auxilary