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/02/23 14:32:31 UTC

svn commit: r1292795 - in /incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki: Fuseki.java HttpNames.java servlets/REST_Quads.java servlets/SPARQL_ServletBase.java servlets/ServletBase.java

Author: andy
Date: Thu Feb 23 13:32:31 2012
New Revision: 1292795

URL: http://svn.apache.org/viewvc?rev=1292795&view=rev
Log:
Settttthe "Vary" header : SPARQL query protocol and SPARQL Graph Store Protocol (GET) do content negotiation.

Modified:
    incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/Fuseki.java
    incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/HttpNames.java
    incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads.java
    incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
    incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java

Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/Fuseki.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/Fuseki.java?rev=1292795&r1=1292794&r2=1292795&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/Fuseki.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/Fuseki.java Thu Feb 23 13:32:31 2012
@@ -30,7 +30,6 @@ import com.hp.hpl.jena.sparql.mgt.ARQMgt
 import com.hp.hpl.jena.sparql.mgt.SystemInfo ;
 import com.hp.hpl.jena.sparql.util.Context ;
 import com.hp.hpl.jena.sparql.util.MappingRegistry ;
-import com.hp.hpl.jena.sparql.util.Symbol;
 import com.hp.hpl.jena.tdb.TDB ;
 import com.hp.hpl.jena.util.FileManager ;
 
@@ -42,8 +41,6 @@ public class Fuseki
     static public String FusekiHomeEnv = "FUSEKI_HOME" ;
     static public String FusekiSymbolIRI = "http://jena.apache.org/fuseki#" ;
     
-    public static final Symbol xFusekiEnableGZipCompression = Symbol.create(FusekiSymbolIRI + "enableGZipCompression");
-    
     static public String PagesPublish = "pages-publish" ;
     static public String PagesAll =     "pages-update" ;
     

Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/HttpNames.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/HttpNames.java?rev=1292795&r1=1292794&r2=1292795&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/HttpNames.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/HttpNames.java Thu Feb 23 13:32:31 2012
@@ -20,12 +20,15 @@ package org.apache.jena.fuseki;
 
 public class HttpNames
 {
+    // Request
     public static final String hAccept              = "Accept" ;
-    public static final String hAllow               = "Allow" ;
     public static final String hAcceptEncoding      = "Accept-Encoding" ;
     public static final String hAcceptCharset       = "Accept-Charset" ;
-    public static final String hAcceptRanges        = "Accept-Ranges" ;
-    
+    //public static final String hAcceptLanguage      = "Accept-Language" ;
+
+    // Response
+    public static final String xhAcceptRanges        = "Accept-Ranges" ;
+    public static final String hAllow               = "Allow" ;
     public static final String hContentEncoding     = "Content-Encoding" ;
     public static final String hContentLengh        = "Content-Length" ;
     public static final String hContentLocation     = "Content-Location" ;
@@ -33,6 +36,7 @@ public class HttpNames
     public static final String hContentType         = "Content-Type" ;
     public static final String hServer              = "Server" ;
     public static final String hLocation            = "Location" ; 
+    public static final String hVary                = "Vary" ;
     public static final String charset              = "charset" ;
     
     // CORS: 

Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads.java?rev=1292795&r1=1292794&r2=1292795&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/REST_Quads.java Thu Feb 23 13:32:31 2012
@@ -58,7 +58,6 @@ public class REST_Quads extends SPARQL_R
         
         TypedOutputStream out = new TypedOutputStream(output, mediaType) ;
         Lang lang = FusekiLib.langFromContentType(mediaType.getContentType()) ;
-        
 
         if ( action.verbose )
             log.info(format("[%d]   Get: Content-Type=%s, Charset=%s => %s", 

Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java?rev=1292795&r1=1292794&r2=1292795&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/SPARQL_ServletBase.java Thu Feb 23 13:32:31 2012
@@ -64,7 +64,7 @@ public abstract class SPARQL_ServletBase
         response = responseTracked ;
         
         String uri = request.getRequestURI() ;
-        setCommonHeaders(response) ;
+        initResponse(request, response) ;
         
         try {
             if ( request.getQueryString() == null && queryStringHandling == PlainRequestFlag.DIFFERENT )
@@ -149,6 +149,15 @@ public abstract class SPARQL_ServletBase
         }
     }
     
+    private void initResponse(HttpServletRequest request, HttpServletResponse response)
+    {
+        setCommonHeaders(response) ;
+        String method = request.getMethod().toUpperCase() ;
+        // All GET and HEAD operations are sensitive to conneg so ...
+        if ( HttpNames.METHOD_GET.equals(method) || HttpNames.METHOD_HEAD.equals(method) )
+            setVaryHeader(response) ;
+    }
+    
     private void printResponse(long id, HttpServletResponseTracker response)
     {
         if ( verbose_debug )

Modified: incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java
URL: http://svn.apache.org/viewvc/incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java?rev=1292795&r1=1292794&r2=1292795&view=diff
==============================================================================
--- incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java (original)
+++ incubator/jena/Jena2/Fuseki/trunk/src/main/java/org/apache/jena/fuseki/servlets/ServletBase.java Thu Feb 23 13:32:31 2012
@@ -29,6 +29,7 @@ import javax.servlet.http.HttpServletRes
 import org.apache.jena.fuseki.Fuseki ;
 import org.apache.jena.fuseki.HttpNames ;
 import org.apache.jena.fuseki.http.HttpSC ;
+import org.openjena.atlas.lib.StrUtils ;
 import org.slf4j.Logger ;
 
 public abstract class ServletBase extends HttpServlet
@@ -178,8 +179,20 @@ public abstract class ServletBase extend
         string = string.replace('\r', ' ') ;
         return string ; 
     }
+
+    static String varyHeaderSetting = 
+        StrUtils.strjoin(",", 
+                         HttpNames.hAccept, 
+                         HttpNames.hAcceptEncoding, 
+                         HttpNames.hAcceptCharset ) ;
+    
+    public static void setVaryHeader(HttpServletResponse httpResponse)
+    {
+        httpResponse.setHeader(HttpNames.hVary, varyHeaderSetting) ;
+    }
+
     
-   public static void setCommonHeaders(HttpServletResponse httpResponse)
+    public static void setCommonHeaders(HttpServletResponse httpResponse)
     {
         httpResponse.setHeader(HttpNames.hAccessControlAllowOrigin, "*") ;
         httpResponse.setHeader(HttpNames.hServer, Fuseki.serverHttpName) ;