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

afs 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 50e559684f GH-2162: Return 400 for upload data parse error
50e559684f is described below

commit 50e559684f87d6fc5253e806b563a29b2ccb2e36
Author: Andy Seaborne <[email protected]>
AuthorDate: Wed Jul 22 13:14:13 2026 +0100

    GH-2162: Return 400 for upload data parse error
---
 .../java/org/apache/jena/fuseki/system/DataUploader.java     |  3 +++
 .../java/org/apache/jena/fuseki/main/TestFileUpload.java     | 12 ++++++++++++
 2 files changed, 15 insertions(+)

diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/DataUploader.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/DataUploader.java
index 7ab0042cfd..ec4cac694f 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/DataUploader.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/system/DataUploader.java
@@ -40,6 +40,7 @@ import org.apache.jena.atlas.web.ContentType;
 import org.apache.jena.fuseki.servlets.*;
 import org.apache.jena.riot.Lang;
 import org.apache.jena.riot.RDFLanguages;
+import org.apache.jena.riot.RiotException;
 import org.apache.jena.riot.RiotParseException;
 import org.apache.jena.riot.lang.StreamRDFCounting;
 import org.apache.jena.riot.system.StreamRDF;
@@ -154,6 +155,8 @@ public class DataUploader {
             }
         }
         catch (ActionErrorException ex) { throw ex; }
+        // Parse error.
+        catch (RiotException ex)        { 
ServletOps.errorBadRequest(ex.getMessage()); }
         catch (Exception ex)            { 
ServletOps.errorOccurred(ex.getMessage()); }
         // Overall results.
         UploadDetails details = new UploadDetails(countingDest.count(), 
countingDest.countTriples(),countingDest.countQuads());
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFileUpload.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFileUpload.java
index 44e8149e3e..8bb12e1469 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFileUpload.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestFileUpload.java
@@ -24,7 +24,9 @@ package org.apache.jena.fuseki.main;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.jena.atlas.iterator.Iter;
+import org.apache.jena.atlas.logging.LogCtl;
 import org.apache.jena.atlas.web.TypedInputStream;
+import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.graph.Graph;
 import org.apache.jena.http.HttpOp;
 import org.apache.jena.http.HttpRDF;
@@ -109,4 +111,14 @@ public class TestFileUpload  extends AbstractFusekiTest {
         assertEquals(1, dsg.getDefaultGraph().size());
         assertEquals(2, dsg.getUnionGraph().size());
     }
+
+    @Test
+    public void upload_gsp_bad_01() {
+        FileSender x = new FileSender(databaseURL());
+        x.add("D.ttl", "JUNK", "text/plain");
+
+        LogCtl.withLevel(Fuseki.actionLog, "FATAL", ()-> {
+            FusekiTestLib.expect400(()->x.send("POST"));
+        });
+    }
 }

Reply via email to