This is an automated email from the ASF dual-hosted git repository.

andy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/jena.git


The following commit(s) were added to refs/heads/main by this push:
     new 435c098a8d GH-2700: Configurable server content negotiation
435c098a8d is described below

commit 435c098a8d009f32b4c48756bc702e40e5d16d02
Author: Andy Seaborne <[email protected]>
AuthorDate: Mon Sep 9 13:19:50 2024 +0100

    GH-2700: Configurable server content negotiation
---
 .../src/main/java/org/apache/jena/fuseki/DEF.java  | 160 +++++++++++++--------
 .../jena/fuseki/servlets/ResponseResultSet.java    |   2 +-
 2 files changed, 99 insertions(+), 63 deletions(-)

diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
index c6cc4b3f2d..55745df837 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/DEF.java
@@ -22,74 +22,110 @@ import org.apache.jena.atlas.web.AcceptList;
 import org.apache.jena.atlas.web.MediaType;
 import static org.apache.jena.riot.WebContent.*;
 
+/**
+ * Content negotiation setup.
+ */
 public class DEF
 {
-    public static final MediaType acceptRDFXML        = 
MediaType.create(contentTypeRDFXML);
-    public static final MediaType acceptNQuads        = 
MediaType.create(contentTypeNQuads);
-    public static final MediaType acceptRSXML         = 
MediaType.create(contentTypeResultsXML);
-    public static final MediaType acceptJSON          = 
MediaType.create(contentTypeJSON);
-    public static final MediaType acceptTurtle        = 
MediaType.create(contentTypeTurtle);
-
-    public static final AcceptList jsonOffer          = 
AcceptList.create(contentTypeJSON);
-
-    public static final AcceptList constructOffer     = 
AcceptList.create(contentTypeTurtle,
-                                                                          
contentTypeTurtleAlt1,
-                                                                          
contentTypeNTriples,
-                                                                          
contentTypeNTriplesAlt,
-                                                                          
contentTypeRDFXML,
-                                                                          
contentTypeTriX,
-                                                                          
contentTypeTriXxml,
-                                                                          
contentTypeJSONLD,
-                                                                          
contentTypeRDFJSON,
-                                                                          
contentTypeRDFThrift,
-
-                                                                          
contentTypeTriG,
-                                                                          
contentTypeTriGAlt1,
-                                                                          
contentTypeNQuads,
-                                                                          
contentTypeNQuadsAlt1
-                                                                          );
-
-    public static final AcceptList rdfOffer           = 
AcceptList.create(contentTypeTurtle,
-                                                                          
contentTypeTurtleAlt1,
-                                                                          
contentTypeNTriples,
-                                                                          
contentTypeNTriplesAlt,
-                                                                          
contentTypeRDFXML,
-                                                                          
contentTypeTriX,
-                                                                          
contentTypeTriXxml,
-                                                                          
contentTypeJSONLD,
-                                                                          
contentTypeRDFJSON,
-                                                                          
contentTypeRDFThrift
-                                                                          );
-
-    public static final AcceptList quadsOffer         = 
AcceptList.create(contentTypeTriG,
-                                                                          
contentTypeTriGAlt1,
-                                                                          
contentTypeJSONLD,
-                                                                          
contentTypeNQuads,
-                                                                          
contentTypeNQuadsAlt1,
-                                                                          
contentTypeTriX,
-                                                                          
contentTypeTriXxml
-                                                                          );
+    // @formatter:off
+
+    // ---- Server configuration default media type
+
+    public static MediaType acceptRDFXML        = acceptRDFXMLDefault();
+    public static MediaType acceptNQuads        = acceptNQuadsDefault();
+    public static MediaType acceptResultSetXML  = acceptResultSetXMLDefault();
+    public static MediaType acceptJSON          = acceptJSONDefault();
+    public static MediaType acceptTurtle        = acceptTurtleDefault();
+
+    // ---- Server configuration offers for content negotiation
+
+    public static AcceptList jsonOffer          = jsonOfferDefault();
+
+    public static AcceptList constructOffer     = constructOfferDefault();
+
+    public static AcceptList rdfOffer           = rdfOfferDefault();
+
+    public static AcceptList quadsOffer         = quadsOfferDefault();
+
+    // Offer for SELECT
+    public static AcceptList rsOfferTable       = rsOfferTableDefault();
+
+    // Offer for ASK
+    public static AcceptList rsOfferBoolean     = rsOfferBooleanDefault();
+
+
+    // ---- Default configuration settings or when content negotiation does 
not provide a media type.
+
+    public static final MediaType acceptRDFXMLDefault()       { return 
MediaType.create(contentTypeRDFXML); }
+    public static final MediaType acceptNQuadsDefault()       { return 
MediaType.create(contentTypeNQuads); }
+    public static final MediaType acceptResultSetXMLDefault() { return 
MediaType.create(contentTypeResultsXML); }
+    public static final MediaType acceptJSONDefault()         { return 
MediaType.create(contentTypeJSON); }
+    public static final MediaType acceptTurtleDefault()       { return 
MediaType.create(contentTypeTurtle); }
+
+    // ---- Default offers for content negotiation.
+
+    public static final AcceptList jsonOfferDefault()         { return 
AcceptList.create(contentTypeJSON); }
+
+    public static final AcceptList constructOfferDefault()    { return 
AcceptList.create(contentTypeTurtle,
+                                                                               
          contentTypeTurtleAlt1,
+                                                                               
          contentTypeNTriples,
+                                                                               
          contentTypeNTriplesAlt,
+                                                                               
          contentTypeRDFXML,
+                                                                               
          contentTypeTriX,
+                                                                               
          contentTypeTriXxml,
+                                                                               
          contentTypeJSONLD,
+                                                                               
          contentTypeRDFJSON,
+                                                                               
          contentTypeRDFThrift,
+
+                                                                               
          contentTypeTriG,
+                                                                               
          contentTypeTriGAlt1,
+                                                                               
          contentTypeNQuads,
+                                                                               
          contentTypeNQuadsAlt1
+                                                                               
         ); }
+
+    public static final AcceptList rdfOfferDefault()          { return 
AcceptList.create(contentTypeTurtle,
+                                                                               
          contentTypeTurtleAlt1,
+                                                                               
          contentTypeNTriples,
+                                                                               
          contentTypeNTriplesAlt,
+                                                                               
          contentTypeRDFXML,
+                                                                               
          contentTypeTriX,
+                                                                               
          contentTypeTriXxml,
+                                                                               
          contentTypeJSONLD,
+                                                                               
          contentTypeRDFJSON,
+                                                                               
          contentTypeRDFThrift
+                                                                               
         ); }
+
+    public static final AcceptList quadsOfferDefault()        { return 
AcceptList.create(contentTypeTriG,
+                                                                               
          contentTypeTriGAlt1,
+                                                                               
          contentTypeJSONLD,
+                                                                               
          contentTypeNQuads,
+                                                                               
          contentTypeNQuadsAlt1,
+                                                                               
          contentTypeTriX,
+                                                                               
          contentTypeTriXxml
+                                                                               
         ); }
 
     // Offer for SELECT
     // This include application/xml and application/json.
-    public static final AcceptList rsOfferTable       = 
AcceptList.create(contentTypeResultsJSON,
-                                                                          
contentTypeJSON,
-                                                                          
contentTypeTextCSV,
-                                                                          
contentTypeTextTSV,
-                                                                          
contentTypeResultsXML,
-                                                                          
contentTypeXML,
-                                                                          
contentTypeResultsThrift,
-                                                                          
contentTypeTextPlain
-                                                                          );
+    public static final AcceptList rsOfferTableDefault()      { return 
AcceptList.create(contentTypeResultsJSON,
+                                                                               
          contentTypeJSON,
+                                                                               
          contentTypeTextCSV,
+                                                                               
          contentTypeTextTSV,
+                                                                               
          contentTypeResultsXML,
+                                                                               
          contentTypeXML,
+                                                                               
          contentTypeResultsThrift,
+                                                                               
          contentTypeTextPlain
+                                                                               
         ); }
 
     // Offer for ASK
     // This includes application/xml and application/json and excludes 
application/sparql-results+thrift
-    public static final AcceptList rsOfferBoolean      = 
AcceptList.create(contentTypeResultsJSON,
-                                                                           
contentTypeJSON,
-                                                                           
contentTypeTextCSV,
-                                                                           
contentTypeTextTSV,
-                                                                           
contentTypeResultsXML,
-                                                                           
contentTypeXML,
-                                                                           
contentTypeTextPlain
-                                                                           );
+    public static final AcceptList rsOfferBooleanDefault()    { return 
AcceptList.create(contentTypeResultsJSON,
+                                                                               
          contentTypeJSON,
+                                                                               
          contentTypeTextCSV,
+                                                                               
          contentTypeTextTSV,
+                                                                               
          contentTypeResultsXML,
+                                                                               
          contentTypeXML,
+                                                                               
          contentTypeTextPlain
+                                                                               
         ); }
+
+    // @formatter:on
 }
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
index e9a556d236..c20e35bcc1 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
@@ -105,7 +105,7 @@ public class ResponseResultSet
 
         String mimeType = null;
         // -- Conneg
-        MediaType i = ConNeg.chooseContentType(request, contentTypeOffer, 
DEF.acceptRSXML);
+        MediaType i = ConNeg.chooseContentType(request, contentTypeOffer, 
DEF.acceptResultSetXML);
         if ( i != null )
             mimeType = i.getContentTypeStr();
 

Reply via email to