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 2014/06/23 11:54:45 UTC

svn commit: r1604729 - in /jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki: mgt/ActionAsyncTask.java mgt/ActionContainerItem.java mgt/ActionDatasets.java servlets/ServletOps.java

Author: andy
Date: Mon Jun 23 09:54:45 2014
New Revision: 1604729

URL: http://svn.apache.org/r1604729
Log:
Tidy up code : ActionDatasets extends ActionContainerItem.

Modified:
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
    jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionAsyncTask.java Mon Jun 23 09:54:45 2014
@@ -36,7 +36,6 @@ public abstract class ActionAsyncTask ex
     
     public ActionAsyncTask() { super() ; }
     
-    // Block GET - caching issues.
     @Override
     final
     protected void doGet(HttpServletRequest request, HttpServletResponse response) {
@@ -44,9 +43,6 @@ public abstract class ActionAsyncTask ex
     }
 
     @Override
-    protected void execDelete(HttpAction action) { ServletOps.errorMethodNotAllowed(METHOD_DELETE); }
-
-    @Override
     final
     protected JsonValue execGetItem(HttpAction action) { 
         throw new InternalErrorException("GET for AsyncTask -- Should not be here!") ;

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionContainerItem.java Mon Jun 23 09:54:45 2014
@@ -57,7 +57,7 @@ public abstract class ActionContainerIte
     /** GET request on an item in the container - repond with JSON, or null for plain 200 */  
     protected abstract JsonValue execGetItem(HttpAction action) ;
 
-    private void execPost(HttpAction action) {
+    protected void execPost(HttpAction action) {
         JsonValue v ;
         if ( isContainerAction(action) )
             v = execPostContainer(action) ;
@@ -72,7 +72,23 @@ public abstract class ActionContainerIte
     /** POST request on an item in the container - respond with JSON, or null for plain 200 */  
     protected abstract JsonValue execPostItem(HttpAction action) ;
 
-    // Must be an item
-    protected abstract void execDelete(HttpAction action) ;
+    
+    /** DELETE request */
+    protected void execDelete(HttpAction action) {
+        if ( isContainerAction(action)  )
+            execDeleteContainer(action) ;
+        else 
+            execDeleteItem(action) ;
+        ServletOps.success(action) ;
+    }
+    
+    /** DELETE request on an item in the container */
+    protected void execDeleteContainer(HttpAction action) {
+        ServletOps.errorMethodNotAllowed(METHOD_DELETE, "DELETE applied to a container") ;
+    }
 
+    /** DELETE request on an item in the container */
+    protected void execDeleteItem(HttpAction action) {
+        ServletOps.errorMethodNotAllowed(METHOD_DELETE) ;
+    }
 }

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/mgt/ActionDatasets.java Mon Jun 23 09:54:45 2014
@@ -31,7 +31,6 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse ;
 
 import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.json.JSON ;
 import org.apache.jena.atlas.json.JsonBuilder ;
 import org.apache.jena.atlas.json.JsonValue ;
 import org.apache.jena.atlas.lib.InternalErrorException ;
@@ -66,8 +65,7 @@ import com.hp.hpl.jena.update.UpdateActi
 import com.hp.hpl.jena.update.UpdateFactory ;
 import com.hp.hpl.jena.update.UpdateRequest ;
 
-public class ActionDatasets extends ActionCtl {
-    // XXX Use ActionContainerItem
+public class ActionDatasets extends ActionContainerItem {
     
     private static Dataset system = SystemState.getDataset() ;
     private static DatasetGraphTransaction systemDSG = SystemState.getDatasetGraph() ; 
@@ -97,46 +95,9 @@ public class ActionDatasets extends Acti
         doCommon(request, response);
     }
     
-//    @Override
-//    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-//        doCommon(request, response);
-//    }
-
-    @Override
-    protected void perform(HttpAction action) {
-        String method = action.request.getMethod() ; // No need - guarentteed .toUpperCase(Locale.ROOT) ;
-        if ( method.equals(METHOD_GET) )
-            execGet(action) ;
-        else if ( method.equals(METHOD_POST) )
-            execPost(action) ;
-        else if ( method.equals(METHOD_DELETE) )
-            execDelete(action) ;
-        else
-            ServletOps.error(HttpSC.METHOD_NOT_ALLOWED_405) ;
-    }
-
-    protected void execGet(HttpAction action) {
-        JsonValue v ;
-        if ( isContainerAction(action)  )
-            v = execGetContainer(action) ;
-        else
-            v = execGetDataset(action) ;
-        
-        try {
-            HttpServletResponse response = action.response ;
-            ServletOutputStream out = response.getOutputStream() ;
-            response.setContentType(WebContent.contentTypeJSON);
-            response.setCharacterEncoding(WebContent.charsetUTF8) ;
-            JSON.write(out, v) ;
-            out.println() ; 
-            out.flush() ;
-            ServletOps.success(action);
-        } catch (IOException ex) { ServletOps.errorOccurred(ex) ; }
-    }
-    
     // ---- GET : return details of dataset or datasets.
-    
-    private JsonValue execGetContainer(HttpAction action) { 
+    @Override
+    protected JsonValue execGetContainer(HttpAction action) { 
         action.log.info(format("[%d] GET datasets", action.id)) ;
         JsonBuilder builder = new JsonBuilder() ;
         builder.startObject("D") ;
@@ -146,7 +107,8 @@ public class ActionDatasets extends Acti
         return builder.build() ;
     }
 
-    private JsonValue execGetDataset(HttpAction action) {
+    @Override
+    protected JsonValue execGetItem(HttpAction action) {
         action.log.info(format("[%d] GET dataset %s", action.id, action.getDatasetName())) ;
         JsonBuilder builder = new JsonBuilder() ;
         DataAccessPoint dsDesc = DataAccessPointRegistry.get().get(action.getDatasetName()) ;
@@ -158,62 +120,8 @@ public class ActionDatasets extends Acti
     
     // ---- POST 
     
-    // POST /$/datasets/ -- to the container -> register new dataset
-    // POST /$/datasets/name -- change something about an existing dataset
-    
-    protected void execPost(HttpAction action) {
-        if ( isContainerAction(action) )
-            execPostContainer(action) ;
-        else
-            execPostDataset(action) ;
-    }
-    
-    private void execPostDataset(HttpAction action) {
-        String name = action.getDatasetName() ;
-        if ( name == null )
-            name = "''" ;
-        action.log.info(format("[%d] POST dataset %s", action.id, name)) ;
-        
-        if ( action.getDataAccessPoint() == null )
-            ServletOps.errorNotFound("Not found: dataset "+action.getDatasetName());
-        
-        DataService dSrv = action.getDataService() ;
-        if ( dSrv == null )
-            // If not set explicitly, take from DataAccessPoint
-            dSrv = action.getDataAccessPoint().getDataService() ;
-        
-        String s = action.request.getParameter("state") ;
-        if ( s == null || s.isEmpty() )
-            ServletOps.errorBadRequest("No state change given") ;
-
-        // setDatasetState is a transaction on the persistent state of the server. 
-        if ( s.equalsIgnoreCase("active") ) {
-            action.log.info(format("[%d] REBUILD DATASET %s", action.id, name)) ;
-            setDatasetState(name, FusekiVocab.stateActive) ;
-            dSrv.goActive() ; 
-            // DatasetGraph dsg = ???? ;
-            //dSrv.activate(dsg) ; 
-            //dSrv.activate() ;
-        } else if ( s.equalsIgnoreCase("offline") ) {
-            action.log.info(format("[%d] OFFLINE DATASET %s", action.id, name)) ;
-            DataAccessPoint access = action.getDataAccessPoint() ;
-            //access.goOffline() ;
-            dSrv.goOffline() ;  // Affects the target of the name. 
-            setDatasetState(name, FusekiVocab.stateOffline) ;  
-            //dSrv.offline() ;
-        } else if ( s.equalsIgnoreCase("unlink") ) {
-            action.log.info(format("[%d] UNLINK ACCESS NAME %s", action.id, name)) ;
-            DataAccessPoint access = action.getDataAccessPoint() ;
-            ServletOps.errorNotImplemented("unlink: dataset"+action.getDatasetName());
-            //access.goOffline() ;
-            // Registry?
-        }
-        else
-            ServletOps.errorBadRequest("State change operation '"+s+"' not recognized");
-        ServletOps.success(action) ;
-    }
-
-    private void execPostContainer(HttpAction action) {
+    @Override
+    protected JsonValue execPostContainer(HttpAction action) {
         JenaUUID uuid = JenaUUID.generate() ;
         String newURI = uuid.asURI() ;
         Node gn = NodeFactory.createURI(newURI) ;
@@ -225,7 +133,7 @@ public class ActionDatasets extends Acti
         try {
             Model model = system.getNamedModel(gn.getURI()) ;
             StreamRDF dest = StreamRDFLib.graph(model.getGraph()) ;
-
+    
             if ( WebContent.isHtmlForm(ct) )
                 assemblerFromForm(action, dest) ;
             else if ( WebContent.isMultiPartForm(ct) )
@@ -258,7 +166,7 @@ public class ActionDatasets extends Acti
             
             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() ;
             String datasetPath = DataAccessPoint.canonical(datasetName) ;
             action.log.info(format("[%d] Create database : name = %s", action.id, datasetPath)) ;
@@ -285,8 +193,55 @@ public class ActionDatasets extends Acti
             if ( ! committed ) system.abort() ; 
             system.end() ; 
         }
+        return null ;
     }
-    
+
+    @Override
+    protected JsonValue execPostItem(HttpAction action) {
+        String name = action.getDatasetName() ;
+        if ( name == null )
+            name = "''" ;
+        action.log.info(format("[%d] POST dataset %s", action.id, name)) ;
+        
+        if ( action.getDataAccessPoint() == null )
+            ServletOps.errorNotFound("Not found: dataset "+action.getDatasetName());
+        
+        DataService dSrv = action.getDataService() ;
+        if ( dSrv == null )
+            // If not set explicitly, take from DataAccessPoint
+            dSrv = action.getDataAccessPoint().getDataService() ;
+        
+        String s = action.request.getParameter("state") ;
+        if ( s == null || s.isEmpty() )
+            ServletOps.errorBadRequest("No state change given") ;
+
+        // setDatasetState is a transaction on the persistent state of the server. 
+        if ( s.equalsIgnoreCase("active") ) {
+            action.log.info(format("[%d] REBUILD DATASET %s", action.id, name)) ;
+            setDatasetState(name, FusekiVocab.stateActive) ;
+            dSrv.goActive() ; 
+            // DatasetGraph dsg = ???? ;
+            //dSrv.activate(dsg) ; 
+            //dSrv.activate() ;
+        } else if ( s.equalsIgnoreCase("offline") ) {
+            action.log.info(format("[%d] OFFLINE DATASET %s", action.id, name)) ;
+            DataAccessPoint access = action.getDataAccessPoint() ;
+            //access.goOffline() ;
+            dSrv.goOffline() ;  // Affects the target of the name. 
+            setDatasetState(name, FusekiVocab.stateOffline) ;  
+            //dSrv.offline() ;
+        } else if ( s.equalsIgnoreCase("unlink") ) {
+            action.log.info(format("[%d] UNLINK ACCESS NAME %s", action.id, name)) ;
+            DataAccessPoint access = action.getDataAccessPoint() ;
+            ServletOps.errorNotImplemented("unlink: dataset"+action.getDatasetName());
+            //access.goOffline() ;
+            // Registry?
+        }
+        else
+            ServletOps.errorBadRequest("State change operation '"+s+"' not recognized");
+        return null ;
+    }
+
     private void assemblerFromBody(HttpAction action, StreamRDF dest) {
         bodyAsGraph(action, dest) ;
     }
@@ -318,7 +273,8 @@ public class ActionDatasets extends Acti
 
     // ---- DELETE
 
-    protected void execDelete(HttpAction action) {
+    @Override
+    protected void execDeleteItem(HttpAction action) {
         // Does not exist?
         String name = action.getDatasetName() ;
         if ( name == null )

Modified: jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java?rev=1604729&r1=1604728&r2=1604729&view=diff
==============================================================================
--- jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java (original)
+++ jena/Experimental/jena-fuseki2/src/main/java/org/apache/jena/fuseki/servlets/ServletOps.java Mon Jun 23 09:54:45 2014
@@ -114,14 +114,22 @@ public class ServletOps {
     }
 
     public static void errorMethodNotAllowed(String method) {
-        error(HttpSC.METHOD_NOT_ALLOWED_405, "HTTP method not allowed: " + method) ;
+        errorMethodNotAllowed(method, "HTTP method not allowed: " + method) ;
     }
 
+    public static void errorMethodNotAllowed(String method, String msg) {
+        error(HttpSC.METHOD_NOT_ALLOWED_405, msg) ;
+    }
+
+    public static void errorForbidden() {
+        error(HttpSC.FORBIDDEN_403, "Forbidden") ;
+    }
+    
     public static void errorForbidden(String msg) {
         if ( msg != null )
             error(HttpSC.FORBIDDEN_403, msg) ;
         else
-            error(HttpSC.FORBIDDEN_403, "Forbidden") ;
+            errorForbidden() ;
     }
 
     public static void error(int statusCode) {