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
commit 2f1b28475f918257f5d39209afe12bef6d2e6cb9 Author: Andy Seaborne <[email protected]> AuthorDate: Thu Aug 13 15:23:18 2026 +0100 StreamManager.openEx - exception on 'not found' --- .../java/org/apache/jena/query/QueryFactory.java | 6 ++---- .../main/java/org/apache/jena/riot/RDFDataMgr.java | 4 +++- .../java/org/apache/jena/riot/ReadAnything.java | 2 +- .../jena/riot/adapters/AdapterFileManager.java | 2 +- .../org/apache/jena/riot/rowset/QueryResults.java | 4 ++-- .../jena/riot/system/streammgr/StreamManager.java | 24 ++++++++++++++++++++-- .../jena/sparql/resultset/ResultsReader.java | 6 +++--- 7 files changed, 34 insertions(+), 14 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/query/QueryFactory.java b/jena-arq/src/main/java/org/apache/jena/query/QueryFactory.java index 48aa403258..f622108f3d 100644 --- a/jena-arq/src/main/java/org/apache/jena/query/QueryFactory.java +++ b/jena-arq/src/main/java/org/apache/jena/query/QueryFactory.java @@ -206,10 +206,8 @@ public class QueryFactory { if ( streamManager == null ) streamManager = StreamManager.get(); - InputStream in = streamManager.open(url); - if ( in == null ) - throw new NotFoundException("Not found: " + url); - String qStr = IO.readWholeFileAsUTF8(streamManager.open(url)); + InputStream in = streamManager.openEx(url, ()->new NotFoundException("Not found: " + url)); + String qStr = IO.readWholeFileAsUTF8(in); if ( baseURI == null ) baseURI = url; if ( langURI == null ) diff --git a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java index 84a1a7b9e6..3ee298ce0d 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/RDFDataMgr.java @@ -515,6 +515,7 @@ public class RDFDataMgr * Performs content negotiation, including looking at file extension. * @param filenameOrURI * @return TypedInputStream + * @throws RiotNotFoundException */ public static TypedInputStream open(String filenameOrURI) { return open(filenameOrURI, StreamManager.get()); } @@ -525,9 +526,10 @@ public class RDFDataMgr * @param filenameOrURI * @param streamManager * @return TypedInputStream + * @throws RiotNotFoundException */ public static TypedInputStream open(String filenameOrURI, StreamManager streamManager) { - TypedInputStream in = streamManager.open(filenameOrURI); + TypedInputStream in = streamManager.openEx(filenameOrURI); if ( in == null ) throw new RiotNotFoundException("Not found: "+filenameOrURI); return in; diff --git a/jena-arq/src/main/java/org/apache/jena/riot/ReadAnything.java b/jena-arq/src/main/java/org/apache/jena/riot/ReadAnything.java index a2c6a9dfcf..540dac916e 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/ReadAnything.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/ReadAnything.java @@ -57,7 +57,7 @@ public class ReadAnything { /** Read something RDF/SPARQL like */ public static SPARQLResult read(String url, Context context) { Objects.requireNonNull(url); - TypedInputStream in = StreamManager.get(context).open(url); + TypedInputStream in = StreamManager.get(context).openEx(url); if ( in == null ) throw new NotFoundException(url); ContentType ct = WebContent.determineCT(in.getContentType(), null, url); diff --git a/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java b/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java index 4338059298..7166d24149 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/adapters/AdapterFileManager.java @@ -335,7 +335,7 @@ public class AdapterFileManager implements org.apache.jena.util.FileManager */ @Override public InputStream open(String filenameOrURI) { - return streamManager.open(filenameOrURI); + return streamManager.openEx(filenameOrURI); } /** Apply the mapping of a filename or URI */ diff --git a/jena-arq/src/main/java/org/apache/jena/riot/rowset/QueryResults.java b/jena-arq/src/main/java/org/apache/jena/riot/rowset/QueryResults.java index 06804ac9d8..0dbfee0886 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/rowset/QueryResults.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/rowset/QueryResults.java @@ -119,7 +119,7 @@ public class QueryResults { /** Read a row set from a URL or filename. */ public RowSet read(String urlOrFilename) { Objects.nonNull(urlOrFilename); - try ( TypedInputStream in = StreamManager.get(context).open(urlOrFilename) ) { + try ( TypedInputStream in = StreamManager.get(context).openEx(urlOrFilename)) { Lang lang = determinLang(in, urlOrFilename); return readResultSet(in.getInputStream(), lang); } @@ -137,7 +137,7 @@ public class QueryResults { /** Read a row set or boolean from a URL or filename. */ public QueryExecResult readAny(String urlOrFilename) { Objects.nonNull(urlOrFilename); - try ( TypedInputStream in = StreamManager.get(context).open(urlOrFilename) ) { + try ( TypedInputStream in = StreamManager.get(context).openEx(urlOrFilename) ) { Lang lang = determinLang(in, urlOrFilename); return readAny(in.getInputStream(), lang); } diff --git a/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/StreamManager.java b/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/StreamManager.java index 2096ccc42a..8ea2686056 100644 --- a/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/StreamManager.java +++ b/jena-arq/src/main/java/org/apache/jena/riot/system/streammgr/StreamManager.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.apache.jena.atlas.lib.Creator; import org.apache.jena.atlas.lib.Lib; import org.apache.jena.atlas.web.TypedInputStream; import org.apache.jena.riot.RiotNotFoundException; @@ -123,10 +124,10 @@ public class StreamManager { } /** - * Open a file using the locators of this StreamManager. + * Open a file or URL using the locators of this StreamManager. * Returns null if not found. */ - public TypedInputStream open(String filenameOrURI) { + public TypedInputStream openOrNull(String filenameOrURI) { if ( log.isDebugEnabled() ) log.debug("open(" + filenameOrURI + ")"); @@ -138,6 +139,25 @@ public class StreamManager { return openNoMapOrNull(uri); } + /** + * Open a file or URL using the locators of this StreamManager. + * Call an exception provider if the file or URI is not found. + */ + public TypedInputStream openEx(String filenameOrURI, Creator<? extends RuntimeException> handlerCreator) { + TypedInputStream input = openOrNull(filenameOrURI); + if ( input == null ) + throw handlerCreator.create(); + return input ; + } + + /** + * Open a file or URL using the locators of this StreamManager. + * Throw {@link RiotNotFoundException} if the file or URI is not found. + */ + public TypedInputStream openEx(String filenameOrURI) { + return openEx(filenameOrURI, ()->new RiotNotFoundException("Not found: "+filenameOrURI)); + } + /** Test whether a mapping exists */ public boolean hasMapping(String filenameOrURI) { return mapper.containsMapping(filenameOrURI); diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsReader.java b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsReader.java index 9622f0bb49..3677fa6ec6 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsReader.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/resultset/ResultsReader.java @@ -134,7 +134,7 @@ public class ResultsReader { /** Read a result set from a URL or filename. */ public ResultSet read(String urlOrFilename) { Objects.nonNull(urlOrFilename); - try ( TypedInputStream in = StreamManager.get(context).open(urlOrFilename) ) { + try ( TypedInputStream in = StreamManager.get(context).openEx(urlOrFilename) ) { Lang lang = determinLang(in, urlOrFilename); return readResults(in, lang).getResultSet(); } @@ -152,7 +152,7 @@ public class ResultsReader { /** Read a result set from a URL or filename. */ public RowSet readRowSet(String urlOrFilename) { Objects.nonNull(urlOrFilename); - try ( TypedInputStream in = StreamManager.get(context).open(urlOrFilename) ) { + try ( TypedInputStream in = StreamManager.get(context).openEx(urlOrFilename) ) { Lang lang = determinLang(in, urlOrFilename); return readAny(in.getInputStream(), lang).rowSet(); } @@ -170,7 +170,7 @@ public class ResultsReader { /** Read a result set or boolean from a URL or filename. */ public SPARQLResult readAny(String urlOrFilename) { Objects.nonNull(urlOrFilename); - try ( TypedInputStream in = StreamManager.get(context).open(urlOrFilename) ) { + try ( TypedInputStream in = StreamManager.get(context).openEx(urlOrFilename) ) { Lang lang = determinLang(in, urlOrFilename); return readResults(in.getInputStream(), lang); }
