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/10/13 17:58:12 UTC

svn commit: r1397869 - in /jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki: conneg/ConNeg.java servlets/ResponseModel.java servlets/ResponseResultSet.java

Author: andy
Date: Sat Oct 13 15:58:12 2012
New Revision: 1397869

URL: http://svn.apache.org/viewvc?rev=1397869&view=rev
Log:
JENA-243 (potential null-dereference)

Modified:
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/conneg/ConNeg.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseModel.java
    jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/conneg/ConNeg.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/conneg/ConNeg.java?rev=1397869&r1=1397868&r2=1397869&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/conneg/ConNeg.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/conneg/ConNeg.java Sat Oct 13 15:58:12 2012
@@ -109,7 +109,11 @@ public class ConNeg
         AcceptList headerList = new AcceptList(headerString) ;
         
         if ( myPrefs == null )
-            return headerList.first() ;
+        {
+            MediaType i = headerList.first() ;
+            if ( i == null ) return defaultMediaType ;
+            return i ;
+        }
     
         MediaType i = AcceptList.match(headerList, myPrefs) ;
         if ( i == null )

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseModel.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseModel.java?rev=1397869&r1=1397868&r2=1397869&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseModel.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseModel.java Sat Oct 13 15:58:12 2012
@@ -61,48 +61,48 @@ public class ResponseModel
     }
 
     public static void doResponseModel(Model model, HttpServletRequest request, HttpServletResponse response)
+    {
+        String mimeType = null ;        // Header request type 
+
+        // TODO Use MediaType throughout.
+        MediaType i = ConNeg.chooseContentType(request, DEF.rdfOffer, DEF.acceptRDFXML) ;
+        if ( i != null )
+            mimeType = i.getContentType() ;
+
+        String outputField = ResponseOps.paramOutput(request, shortNamesModel) ;
+        if ( outputField != null )
+            mimeType = outputField ;
+
+        String writerMimeType = mimeType ;
+
+        if ( mimeType == null )
+        {
+            Fuseki.requestLog.warn("Can't find MIME type for response") ;
+            String x = WebLib.getAccept(request) ;
+            String msg ;
+            if ( x == null )
+                msg = "No Accept: header" ;
+            else
+                msg = "Accept: "+x+" : Not understood" ;
+            SPARQL_ServletBase.error(HttpSC.NOT_ACCEPTABLE_406, msg) ;
+        }
+
+        String contentType = mimeType ;
+        String charset =     WebContent.charsetUTF8 ;
+
+        String forceAccept = ResponseOps.paramForceAccept(request) ;
+        if ( forceAccept != null )
         {
-            String mimeType = null ;        // Header request type 
-            
-            // TODO Use MediaType throughout.
-            MediaType i = ConNeg.chooseContentType(request, DEF.rdfOffer, DEF.acceptRDFXML) ;
-            if ( i != null )
-                mimeType = i.getContentType() ;
-            
-            String outputField = ResponseOps.paramOutput(request, shortNamesModel) ;
-            if ( outputField != null )
-                mimeType = outputField ;
-            
-            String writerMimeType = mimeType ;
-            
-            if ( mimeType == null )
-            {
-                Fuseki.requestLog.warn("Can't find MIME type for response") ;
-                String x = WebLib.getAccept(request) ;
-                String msg ;
-                if ( x == null )
-                    msg = "No Accept: header" ;
-                else
-                    msg = "Accept: "+x+" : Not understood" ;
-                SPARQL_ServletBase.error(HttpSC.NOT_ACCEPTABLE_406, msg) ;
-            }
-
-            String contentType = mimeType ;
-            String charset =     WebContent.charsetUTF8 ;
-            
-            String forceAccept = ResponseOps.paramForceAccept(request) ;
-            if ( forceAccept != null )
-            {
-                contentType = WebContent.contentTypeTextPlain ;
-                charset = WebContent.charsetUTF8 ;
-            }
-            
-            Lang lang = FusekiLib.langFromContentType(contentType) ; 
-            RDFWriter rdfw = FusekiLib.chooseWriter(lang) ;
-                 
-            if ( rdfw instanceof RDFXMLWriterI )
-                rdfw.setProperty("showXmlDeclaration", "true") ;
-            
+            contentType = WebContent.contentTypeTextPlain ;
+            charset = WebContent.charsetUTF8 ;
+        }
+
+        Lang lang = FusekiLib.langFromContentType(contentType) ; 
+        RDFWriter rdfw = FusekiLib.chooseWriter(lang) ;
+
+        if ( rdfw instanceof RDFXMLWriterI )
+            rdfw.setProperty("showXmlDeclaration", "true") ;
+
     //        // Write locally to check it's possible.
     //        // Time/space tradeoff.
     //        try {
@@ -113,16 +113,15 @@ public class ResponseModel
     //        {
     //            SPARQL_ServletBase.errorOccurred(ex) ;
     //        }
-            
-            try {
-                ResponseResultSet.setHttpResponse(request, response, contentType, charset) ; 
-                response.setStatus(HttpSC.OK_200) ;
-                ServletOutputStream out = response.getOutputStream() ;
-                rdfw.write(model, out, null) ;
-                out.flush() ;
-            }
-            catch (Exception ex) { SPARQL_ServletBase.errorOccurred(ex) ; }
-        }
 
+        try {
+            ResponseResultSet.setHttpResponse(request, response, contentType, charset) ; 
+            response.setStatus(HttpSC.OK_200) ;
+            ServletOutputStream out = response.getOutputStream() ;
+            rdfw.write(model, out, null) ;
+            out.flush() ;
+        }
+        catch (Exception ex) { SPARQL_ServletBase.errorOccurred(ex) ; }
+    }
 }
 

Modified: jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java?rev=1397869&r1=1397868&r2=1397869&view=diff
==============================================================================
--- jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java (original)
+++ jena/trunk/jena-fuseki/src/main/java/org/apache/jena/fuseki/servlets/ResponseResultSet.java Sat Oct 13 15:58:12 2012
@@ -30,6 +30,7 @@ import org.apache.jena.fuseki.DEF ;
 import org.apache.jena.fuseki.FusekiException ;
 import org.apache.jena.fuseki.conneg.ConNeg ;
 import org.apache.jena.fuseki.http.HttpSC ;
+import static org.openjena.atlas.lib.Lib.equal ;
 import org.openjena.atlas.web.AcceptList ;
 import org.openjena.atlas.web.MediaType ;
 import org.openjena.riot.WebContent ;
@@ -114,7 +115,7 @@ public class ResponseResultSet
              
         // Stylesheet - change to application/xml.
         final String stylesheetURL = ResponseOps.paramStylesheet(request) ;
-        if ( stylesheetURL != null && serializationType.equals(WebContent.contentTypeResultsXML))
+        if ( stylesheetURL != null && equal(serializationType,WebContent.contentTypeResultsXML) )
             contentType = WebContent.contentTypeXML ;
         
         // Force to text/plain?
@@ -124,7 +125,7 @@ public class ResponseResultSet
 
         // Better : dispatch on MediaType
         // ---- Form: XML
-        if ( serializationType.equals(WebContent.contentTypeResultsXML) )
+        if ( equal(serializationType, WebContent.contentTypeResultsXML) )
         {
             try {
                 sparqlXMLOutput(contentType, new OutputContent(){
@@ -143,7 +144,7 @@ public class ResponseResultSet
         }
 
         // ---- Form: JSON
-        if ( serializationType.equals(WebContent.contentTypeResultsJSON) )
+        if ( equal(serializationType, WebContent.contentTypeResultsJSON) )
         {
             try {
                 jsonOutput(contentType, new OutputContent(){
@@ -163,7 +164,7 @@ public class ResponseResultSet
         }
 
         // ---- Form: text
-        if ( serializationType.equals(WebContent.contentTypeTextPlain) )
+        if ( equal(serializationType, WebContent.contentTypeTextPlain) )
         {
             try {
                 textOutput(contentType, new OutputContent(){
@@ -189,8 +190,8 @@ public class ResponseResultSet
             return ;
         }
         
-        if ( serializationType.equals(WebContent.contentTypeTextCSV) || 
-            serializationType.equals(WebContent.contentTypeTextTSV) )
+        if ( equal(serializationType, WebContent.contentTypeTextCSV) || 
+             equal(serializationType, WebContent.contentTypeTextTSV) )
         {
             try {
                 OutputContent output ;