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/11/26 21:32:24 UTC

svn commit: r1545822 - in /jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt: DatasetsCollectionServlet.java DescriptionServlet.java JsonDescription.java

Author: andy
Date: Tue Nov 26 20:32:24 2013
New Revision: 1545822

URL: http://svn.apache.org/r1545822
Log:
Refinement of /$/datasets

Modified:
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DescriptionServlet.java
    jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java?rev=1545822&r1=1545821&r2=1545822&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DatasetsCollectionServlet.java Tue Nov 26 20:32:24 2013
@@ -81,42 +81,66 @@ public class DatasetsCollectionServlet e
     }
         
     @Override
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
-        String name = request.getRequestURI() ;
-        int idx = name.lastIndexOf('/') ;
-        name = name.substring(idx) ;
-        String datasetPath = DatasetRef.canocialDatasetPath(name) ;
-        DatasetRef dsDesc = DatasetRegistry.get().get(datasetPath) ;
-        if ( dsDesc == null )
-            errorNotFound("Not found: "+name);
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        try {
+            execGet(request, response) ;
+        } catch (ActionErrorException ex) {
+            if ( ex.exception != null )
+                ex.exception.printStackTrace(System.err) ;
+            // XXX Log message done by printResponse in a moment.
+            if ( ex.message != null )
+                responseSendError(response, ex.rc, ex.message) ;
+            else
+                responseSendError(response, ex.rc) ;
+        } 
+    }
+    protected void execGet(HttpServletRequest request, HttpServletResponse response) {
         
         JsonBuilder builder = new JsonBuilder() ;
-        JsonDescription.describe(builder, dsDesc) ;
+        String pathInfo = request.getPathInfo() ;
+        if ( pathInfo == null || pathInfo.isEmpty() || pathInfo.equals("/") ) {
+            // All
+            
+            builder.startObject() ;
+            builder.key("datasets") ;
+            JsonDescription.arrayDatasets(builder, DatasetRegistry.get());
+            builder.finishObject() ;
+        } else {
+            String name = pathInfo ; // request.getRequestURI() ;
+            int idx = pathInfo.lastIndexOf('/') ;
+            if ( idx > 0 )
+                name = name.substring(idx) ;
+            String datasetPath = DatasetRef.canocialDatasetPath(name) ;
+            DatasetRef dsDesc = DatasetRegistry.get().get(datasetPath) ;
+            if ( dsDesc == null )
+                errorNotFound("Not found: dataset "+name);
+            JsonDescription.describe(builder, dsDesc) ;
+        }
         JsonValue v = builder.build() ;
-        ServletOutputStream out = response.getOutputStream() ;
-        response.setContentType(WebContent.contentTypeJSON);
-        response.setCharacterEncoding(WebContent.charsetUTF8) ;
-        JSON.write(out, v) ;
-        out.println() ; 
-        out.flush() ;
+        try {
+            ServletOutputStream out = response.getOutputStream() ;
+            response.setContentType(WebContent.contentTypeJSON);
+            response.setCharacterEncoding(WebContent.charsetUTF8) ;
+            JSON.write(out, v) ;
+            out.println() ; 
+            out.flush() ;
+        } catch (IOException ex) { errorOccurred(ex) ; }
     }
-
+    
     protected void execPost(HttpServletRequest request, HttpServletResponse response) {
+        String pathInfo = request.getPathInfo() ;
+        if ( pathInfo != null && ! pathInfo.isEmpty() && ! pathInfo.equals("/") ) {
+            // Can only POST to the container.
+            errorNotFound("Not found") ;
+            return ;
+        }
+        
         Model m = ModelFactory.createDefaultModel() ;
         StreamRDF dest = StreamRDFLib.graph(m.getGraph()) ;
         bodyAsGraph(request, dest) ;
         Resource t = m.createResource("http://jena.apache.org/fuseki#Service") ;
         List<Resource> services = getByType(t, m) ; 
             
-//        ResultSet rs = query("SELECT * { ?service rdf:type fuseki:Service }", m) ; 
-//        List<Resource> services = new ArrayList<Resource>() ;
-//        for ( ; rs.hasNext() ; )
-//        {
-//            QuerySolution soln = rs.next() ;
-//            Resource svc = soln.getResource("service") ;
-//            services.add(svc) ;
-//        }
-        
         if ( services.size() == 0 ) {
             log.error("No services found") ;
             throw new FusekiConfigException() ;
@@ -139,13 +163,6 @@ public class DatasetsCollectionServlet e
         SPARQLServer.registerDataset(datasetPath, dsDesc) ;
     }
 
-//    @Override
-//    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException
-//    {
-//        
-//    }
-    
-    
     // XXX Merge with SPARQL_REST_RW.incomingData
     
     protected static ErrorHandler errorHandler = ErrorHandlerFactory.errorHandlerStd(log) ;

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DescriptionServlet.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DescriptionServlet.java?rev=1545822&r1=1545821&r2=1545822&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DescriptionServlet.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/DescriptionServlet.java Tue Nov 26 20:32:24 2013
@@ -30,7 +30,6 @@ 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.fuseki.Fuseki ;
-import org.apache.jena.fuseki.server.DatasetRef ;
 import org.apache.jena.fuseki.server.DatasetRegistry ;
 import org.apache.jena.riot.WebContent ;
 import org.apache.jena.web.HttpSC ;
@@ -58,8 +57,7 @@ public class DescriptionServlet extends 
         }
     }
     
-    private void description(HttpServletRequest req, HttpServletResponse resp) throws IOException
-    {
+    private void description(HttpServletRequest req, HttpServletResponse resp) throws IOException {
         ServletOutputStream out = resp.getOutputStream() ;
         resp.setContentType(WebContent.contentTypeJSON);
         resp.setCharacterEncoding(WebContent.charsetUTF8) ;
@@ -93,18 +91,13 @@ public class DescriptionServlet extends 
             .key("version").value(Fuseki.VERSION) ;
     }
     
-    private int port(Server jettyServer ) {
+    private int port(Server jettyServer) {
         return jettyServer.getConnectors()[0].getPort() ;
     }
 
     private void describeDataset(JsonBuilder builder) {
         builder.key("datasets") ;
-        builder.startArray() ;
-        for ( String ds : DatasetRegistry.get().keys() ) {
-            DatasetRef desc = DatasetRegistry.get().get(ds) ;
-            JsonDescription.describe(builder, desc) ;
-        }
-        builder.finishArray() ;
+        JsonDescription.arrayDatasets(builder, DatasetRegistry.get());
     }
 
 }

Modified: jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java
URL: http://svn.apache.org/viewvc/jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java?rev=1545822&r1=1545821&r2=1545822&view=diff
==============================================================================
--- jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java (original)
+++ jena/branches/jena-fuseki-new-ui/src/main/java/org/apache/jena/fuseki/mgt/JsonDescription.java Tue Nov 26 20:32:24 2013
@@ -20,6 +20,7 @@ package org.apache.jena.fuseki.mgt;
 
 import org.apache.jena.atlas.json.JsonBuilder ;
 import org.apache.jena.fuseki.server.DatasetRef ;
+import org.apache.jena.fuseki.server.DatasetRegistry ;
 import org.apache.jena.fuseki.server.ServiceRef ;
 
 /** Create a description of a service */
@@ -31,7 +32,16 @@ public class JsonDescription {
     static final String srvType = "srv.type" ;
     static final String srvEndpoints = "srv.endpoints" ;
     
-    static void describe(JsonBuilder builder, ServiceRef serviceref) {
+    public static void arrayDatasets(JsonBuilder builder, DatasetRegistry registry) {
+        builder.startArray() ;
+        for ( String ds : registry.keys() ) {
+            DatasetRef desc = DatasetRegistry.get().get(ds) ;
+            JsonDescription.describe(builder, desc) ;
+        }
+        builder.finishArray() ;
+    }
+    
+    public static void describe(JsonBuilder builder, ServiceRef serviceref) {
         builder.startObject() ;
         
         builder.key(srvType).value(serviceref.name) ;
@@ -45,7 +55,7 @@ public class JsonDescription {
         builder.finishObject() ;
     }
     
-    static void describe(JsonBuilder builder, DatasetRef ds) {
+    public static void describe(JsonBuilder builder, DatasetRef ds) {
         
         builder.startObject() ;