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)
{