You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/01/30 17:16:55 UTC

svn commit: r1440499 - in /jena/trunk/jena-fuseki/src: main/java/org/apache/jena/fuseki/mgt/ main/java/org/apache/jena/fuseki/servlets/ test/java/org/apache/jena/fuseki/

Author: rvesse
Date: Wed Jan 30 16:16:54 2013
New Revision: 1440499

URL: http://svn.apache.org/viewvc?rev=1440499&view=rev
Log:
Add a Fuseki-Request-ID header to the HTTP response (JENA-387)

Modified:
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ActionBackup.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
    jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/TestQuery.java

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ActionBackup.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ActionBackup.java?rev=1440499&r1=1440498&r2=1440499&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ActionBackup.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/mgt/ActionBackup.java Wed Jan 30 16:16:54 2013
@@ -84,7 +84,8 @@ public class ActionBackup extends Servle
         }
 
         DatasetRef ref = DatasetRegistry.get().get(dataset) ;
-        HttpAction action = new HttpAction(requestIdAlloc.incrementAndGet(), ref, request, response, false) ;
+        long id = this.getRequestId(response);
+        HttpAction action = new HttpAction(id, ref, request, response, false) ;
         scheduleBackup(action, dataset) ;
     }
 

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java?rev=1440499&r1=1440498&r2=1440499&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java Wed Jan 30 16:16:54 2013
@@ -54,7 +54,7 @@ public abstract class SPARQL_ServletBase
     protected void doCommon(HttpServletRequest request, HttpServletResponse response)
     //throws ServletException, IOException
     {
-        long id = requestIdAlloc.incrementAndGet() ;
+        long id = this.getRequestId(response);
         printRequest(id, request) ;
         
         HttpServletResponseTracker responseTracked = new HttpServletResponseTracker(response) ;

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java?rev=1440499&r1=1440498&r2=1440499&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java Wed Jan 30 16:16:54 2013
@@ -35,7 +35,7 @@ import org.slf4j.Logger ;
 public abstract class ServletBase extends HttpServlet
 {
     protected static final Logger log = Fuseki.requestLog ;
-    protected static AtomicLong requestIdAlloc = new AtomicLong(0) ;
+    private static AtomicLong requestIdAlloc = new AtomicLong(0) ;
     protected final boolean verbose_debug ;
 
     protected ServletBase(boolean verbose_debug)
@@ -43,6 +43,26 @@ public abstract class ServletBase extend
         this.verbose_debug = verbose_debug ;
     }
     
+    /**
+     * Helper method which gets a unique request ID and appends it as a header to the response
+     * @param response Response
+     * @return Request ID
+     */
+    protected long getRequestId(HttpServletResponse response) {
+        long id = ServletBase.requestIdAlloc.incrementAndGet();
+        this.addRequestId(response, id);
+        return id;
+    }
+    
+    /**
+     * Helper method for attaching a request ID to a response as a header
+     * @param response Response
+     * @param id Request ID
+     */
+    protected void addRequestId(HttpServletResponse response, long id) {
+        response.addHeader("Fuseki-Request-ID", Long.toString(id));
+    }
+    
     protected void responseSendError(HttpServletResponse response, int statusCode, String message)
     {
         try { response.sendError(statusCode, message) ; }

Modified: jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/TestQuery.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/TestQuery.java?rev=1440499&r1=1440498&r2=1440499&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/TestQuery.java (original)
+++ jena/trunk/jena-fuseki/src/test/java/org/apache/jena/fuseki/TestQuery.java Wed Jan 30 16:16:54 2013
@@ -18,6 +18,13 @@
 
 package org.apache.jena.fuseki;
 
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+
+import junit.framework.Assert;
+
 import org.apache.jena.fuseki.DatasetAccessor ;
 import org.apache.jena.fuseki.DatasetAccessorFactory ;
 import org.junit.AfterClass ;
@@ -28,6 +35,7 @@ import com.hp.hpl.jena.query.QueryExecut
 import com.hp.hpl.jena.query.QueryExecutionFactory ;
 import com.hp.hpl.jena.query.ResultSet ;
 import com.hp.hpl.jena.query.ResultSetFormatter ;
+import com.hp.hpl.jena.sparql.engine.http.HttpQuery;
 import com.hp.hpl.jena.sparql.resultset.ResultSetCompare ;
 import com.hp.hpl.jena.sparql.sse.Item ;
 import com.hp.hpl.jena.sparql.sse.SSE ;
@@ -62,6 +70,13 @@ public class TestQuery extends BaseServe
     {
         execQuery("SELECT * {?s ?p ?o}", 1) ;
     }
+    
+    @Test public void request_id_header_01() throws IOException
+    {
+        URL u = new URL(serviceQuery);
+        HttpURLConnection conn = (HttpURLConnection) u.openConnection();
+        Assert.assertTrue(conn.getHeaderField("Fuseki-Request-ID") != null);
+    }
 
     private void execQuery(String queryString, int exceptedRowCount)
     {