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 2012/08/08 15:45:32 UTC

svn commit: r1370762 - in /jena/trunk/jena-fuseki/src: main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java test/java/org/apache/jena/fuseki/BaseServerTest.java

Author: andy
Date: Wed Aug  8 13:45:32 2012
New Revision: 1370762

URL: http://svn.apache.org/viewvc?rev=1370762&view=rev
Log:
Tidy up and note sissues around servlet filter chains for redirected operations.

Modified:
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java
    jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/BaseServerTest.java

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java?rev=1370762&r1=1370761&r2=1370762&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_Dataset.java Wed Aug  8 13:45:32 2012
@@ -80,6 +80,18 @@ public class SPARQL_Dataset extends SPAR
     private SPARQL_ServletBase restServlet_RW  = new SPARQL_REST_RW(verbose_debug) ;
     private SPARQL_ServletBase restServlet_R   = new SPARQL_REST_R(verbose_debug) ;
     private SPARQL_ServletBase restQuads       = new REST_Quads(verbose_debug) ;
+
+    
+    private String getEPName(String dsname, List<String> endpoints)
+    {
+        if (endpoints == null || endpoints.size() == 0) return null ;
+        String x = endpoints.get(0) ;
+        if ( ! dsname.endsWith("/") )
+            x = dsname+"/"+x ;
+        else
+            x = dsname+x ;
+        return x ;
+    }
     
     @Override
     protected void validate(HttpServletRequest request)
@@ -87,6 +99,9 @@ public class SPARQL_Dataset extends SPAR
         // already checked in SPARQ_Dataset?
     }
 
+    // Developement : calls to other srvlets marked ****
+    // This will need to do a proper servlet dispatch if they are going to be filterd (security, compression).
+    
     @Override
     protected void doCommonWorker(long id, HttpServletRequest request, HttpServletResponse response)
     {
@@ -115,15 +130,17 @@ public class SPARQL_Dataset extends SPAR
         {
             if ( trailing.length() != 0 )
             {
-                // Direct naming    
+                // Direct naming to indirect naming.
                 String absURI = request.getRequestURL().toString() ;
                 HttpActionREST a = new HttpActionREST(id, desc, absURI, request, response, verbose_debug) ;
                 // Conneg.
                 // Check access.
+                // ****
                 new SPARQL_REST_RW(verbose_debug).dispatch(a) ;
             }
             else
             {
+                // Direct action on the dataset itself.
                 restQuads.doCommonWorker(id, request, response) ;
                 return ;
             }
@@ -160,15 +177,26 @@ public class SPARQL_Dataset extends SPAR
         // Check an endpoint is registered.
         if ( hasParamQuery )
         {
-            if ( desc.queryEP.size() > 0 )
-                queryServlet.doCommonWorker(id, request, response) ;
-            else
+            // Call by dispatch - follows the servlet chain. 
+            String x = getEPName(desc.name, desc.queryEP) ;
+            if ( x == null )
                 errorMethodNotAllowed(method) ;
+            else
+            {
+                //request.setAttribute("org.apache.jena.fuseki.id", id) ;
+                forwardServlet(x, request, response) ;
+            }
+            // Call direct.
+//            if ( desc.queryEP.size() > 0 )
+//                queryServlet.doCommonWorker(id, request, response) ;
+//            else
+//                errorMethodNotAllowed(method) ;
         }
 
         if ( hasParamRequest )
         {
             if ( desc.updateEP.size() > 0 )
+                // ****
                 updateServlet.doCommonWorker(id, request, response) ;
             else
                 errorMethodNotAllowed(method) ;
@@ -177,8 +205,10 @@ public class SPARQL_Dataset extends SPAR
         if ( hasParamGraph )
         {
             if ( desc.readWriteGraphStoreEP.size() > 0 )
+                // ****
                 restServlet_RW.doCommonWorker(id, request, response) ;
             else if ( desc.readGraphStoreEP.size() > 0 )
+                // ****
                 restServlet_R.doCommonWorker(id, request, response) ;
             else
                 errorMethodNotAllowed(method) ;
@@ -206,6 +236,17 @@ public class SPARQL_Dataset extends SPAR
         return true ;
     }
 
+    private void forwardServlet(String target, HttpServletRequest request, HttpServletResponse response)
+    {
+        try
+        {
+            // relative
+            request.getRequestDispatcher(target).forward(request, response) ;
+            
+            // Absolute
+            // getServletContext().getRequestDispatcher(target)
+        } catch (Exception e) { errorOccurred(e) ; }
+    }
 
     @Override
     protected void perform(long id, DatasetRef desc, HttpServletRequest request, HttpServletResponse response)

Modified: jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/BaseServerTest.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/BaseServerTest.java?rev=1370762&r1=1370761&r2=1370762&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/BaseServerTest.java (original)
+++ jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/BaseServerTest.java Wed Aug  8 13:45:32 2012
@@ -32,8 +32,6 @@ public class BaseServerTest extends Base
     public static final String serviceQuery  = "http://localhost:"+ServerTest.port+datasetPath+"/query" ; 
     public static final String serviceREST   = "http://localhost:"+ServerTest.port+datasetPath+"/data" ; // ??????
     
-    
-    
     protected static final String gn1       = "http://graph/1" ;
     protected static final String gn2       = "http://graph/2" ;
     protected static final String gn99      = "http://graph/99" ;