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

commit 7cda1394eafb8bb9e9b0097cd4360cb78187d19a
Author: Andy Seaborne <[email protected]>
AuthorDate: Mon Oct 20 18:24:16 2025 +0100

    Act on warnings arising from Java21
---
 .../apache/jena/riot/system/stream/LocatorFTP.java | 23 ++-------
 jena-cmds/src/main/java/arq/rdfdiff.java           | 18 +++----
 jena-cmds/src/main/java/jena/schemagen.java        | 60 ++++++++--------------
 .../java/org/apache/jena/langtagx/LangTagX.java    |  2 -
 .../org/apache/jena/rdf/model/impl/ModelCom.java   | 11 ++--
 .../apache/jena/rdf/model/impl/NTripleReader.java  | 13 ++---
 .../apache/jena/rdfxml/xmlinput1/RDFXMLReader.java |  8 ++-
 .../main/java/org/apache/jena/util/FileUtils.java  | 12 +++--
 .../jena/reasoner/test/WGReasonerTester.java       | 32 +++++++-----
 .../org/apache/jena/ttl_test/JenaReaderBase.java   |  2 +-
 .../jena/arq/querybuilder/ConvertersTest.java      | 17 +++---
 .../service/enhancer/claimingcache/RefImpl.java    |  2 +-
 .../util/AutoCloseableWithLeakDetectionBase.java   |  2 +-
 .../org/apache/jena/fuseki/build/BuildLib.java     | 59 +++++++++++++++------
 .../org/apache/jena/fuseki/main/TestQuery.java     | 38 ++++++++------
 .../jena/geosparql/spatial/task/TaskThread.java    |  5 --
 16 files changed, 151 insertions(+), 153 deletions(-)

diff --git 
a/jena-arq/src/main/java/org/apache/jena/riot/system/stream/LocatorFTP.java 
b/jena-arq/src/main/java/org/apache/jena/riot/system/stream/LocatorFTP.java
index 47c7889f93..1b1035b339 100644
--- a/jena-arq/src/main/java/org/apache/jena/riot/system/stream/LocatorFTP.java
+++ b/jena-arq/src/main/java/org/apache/jena/riot/system/stream/LocatorFTP.java
@@ -18,15 +18,9 @@
 
 package org.apache.jena.riot.system.stream ;
 
-import java.io.IOException ;
-import java.io.InputStream ;
-import java.net.MalformedURLException ;
-import java.net.URL ;
-
-import org.apache.jena.atlas.io.IO ;
-import org.apache.jena.atlas.web.ContentType ;
+import org.apache.jena.atlas.web.HttpException;
 import org.apache.jena.atlas.web.TypedInputStream ;
-import org.apache.jena.riot.RDFLanguages ;
+import org.apache.jena.http.HttpOp;
 import org.apache.jena.riot.RiotException ;
 import org.slf4j.Logger ;
 import org.slf4j.LoggerFactory ;
@@ -47,17 +41,10 @@ public class LocatorFTP extends LocatorURL {
     public TypedInputStream performOpen(String uri) {
         if ( uri.startsWith("ftp://";) ) {
             try {
-                URL url = new URL(uri) ;
-                InputStream in = url.openStream() ;
-                ContentType ct = RDFLanguages.guessContentType(uri) ;
-                return new TypedInputStream(in, ct) ;
-            } 
-            catch (MalformedURLException ex) {
-                throw new RiotException("Bad FTP URL: "+uri, ex) ;
+                return HttpOp.httpGet(uri);
             }
-            catch (IOException ex) {
-                // This includes variations on "not found"
-                IO.exception(ex) ;
+            catch (HttpException ex) {
+                throw new RiotException("Bad FTP URL: "+uri, ex) ;
             }
         }
         return null ;
diff --git a/jena-cmds/src/main/java/arq/rdfdiff.java 
b/jena-cmds/src/main/java/arq/rdfdiff.java
index 077b1aacc0..a64530519a 100644
--- a/jena-cmds/src/main/java/arq/rdfdiff.java
+++ b/jena-cmds/src/main/java/arq/rdfdiff.java
@@ -20,16 +20,11 @@ package arq;
 
 import static org.apache.jena.atlas.logging.LogCtl.setLogging;
 
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
 import java.io.FileInputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.*;
 
 import org.apache.jena.graph.GraphMemFactory;
 import org.apache.jena.rdf.model.*;
@@ -282,9 +277,8 @@ public class rdfdiff extends java.lang.Object {
 
     protected static void read(Model model, String in, String lang, String 
base) throws java.io.FileNotFoundException {
         try {
-            URL url = new URL(in);
-            model.read(in, base, lang);
-        } catch (java.net.MalformedURLException e) {
+            new URI(in).toURL();
+        } catch (URISyntaxException | MalformedURLException e) {
             model.read(new FileInputStream(in), base, lang);
         }
     }
diff --git a/jena-cmds/src/main/java/jena/schemagen.java 
b/jena-cmds/src/main/java/jena/schemagen.java
index f5744237bd..b88680e9ed 100644
--- a/jena-cmds/src/main/java/jena/schemagen.java
+++ b/jena-cmds/src/main/java/jena/schemagen.java
@@ -21,19 +21,23 @@
 package jena;
 
 
+import static org.apache.jena.atlas.logging.LogCtl.setLogging;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
 import org.apache.jena.ontology.Individual;
 import org.apache.jena.ontology.OntModel;
 import org.apache.jena.ontology.OntModelSpec;
-import org.apache.jena.rdf.model.Literal;
-import org.apache.jena.rdf.model.Model;
-import org.apache.jena.rdf.model.ModelFactory;
-import org.apache.jena.rdf.model.NodeIterator;
-import org.apache.jena.rdf.model.Property;
-import org.apache.jena.rdf.model.RDFNode;
-import org.apache.jena.rdf.model.Resource;
-import org.apache.jena.rdf.model.ResourceFactory;
-import org.apache.jena.rdf.model.Statement;
-import org.apache.jena.rdf.model.StmtIterator;
+import org.apache.jena.rdf.model.*;
 import org.apache.jena.riot.RDFDataMgr;
 import org.apache.jena.riot.RDFFormat;
 import org.apache.jena.riot.RDFWriter;
@@ -46,29 +50,6 @@ import org.apache.jena.vocabulary.RDF;
 import org.apache.jena.vocabulary.RDFS;
 import org.apache.jena.vocabulary.XSD;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-import static org.apache.jena.atlas.logging.LogCtl.setLogging;
-
 /**
  * <p>
  * A vocabulary generator, that will consume an ontology or other vocabulary 
file,
@@ -2131,16 +2112,16 @@ public class schemagen {
          */
         public static String urlCheck( String uriOrFile ) {
             boolean legal = true;
-            String url = uriOrFile;
-
             // is it a URI already?  to check, we make a URL and see what 
happens!
             try {
-                new URL( url );
+                new URI(uriOrFile).toURL();
+                return uriOrFile;
             }
-            catch (MalformedURLException ignore) {
+            catch (URISyntaxException | MalformedURLException | 
IllegalArgumentException ignore) {
                 legal = false;
             }
 
+            String url = uriOrFile;
             // if not a legal url, assume it's a file
             if (!legal) {
                 legal = true;
@@ -2148,9 +2129,9 @@ public class schemagen {
                 url = "file:" + (uriOrFile.startsWith( slash ) ? (slash + 
slash) : "") + uriOrFile;
 
                 try {
-                    new URL( url );
+                    new URI(url).toURL();
                 }
-                catch (MalformedURLException ignore) {
+                catch (URISyntaxException | MalformedURLException ignore) {
                     legal = false;
                 }
             }
@@ -2158,7 +2139,6 @@ public class schemagen {
             if (!legal) {
                 throw new SchemagenException( "Could not parse " + uriOrFile + 
" as a legal URL or a file reference. Aborting.", null );
             }
-
             return url;
         }
     } /* End class SchemagenUtils */
diff --git a/jena-core/src/main/java/org/apache/jena/langtagx/LangTagX.java 
b/jena-core/src/main/java/org/apache/jena/langtagx/LangTagX.java
index 96c589fab0..475d19874a 100644
--- a/jena-core/src/main/java/org/apache/jena/langtagx/LangTagX.java
+++ b/jena-core/src/main/java/org/apache/jena/langtagx/LangTagX.java
@@ -94,8 +94,6 @@ public class LangTagX {
      * <p>
      * Passing this test does not guarantee the string is valid language tag. 
Use
      * {@link LangTagX#checkLanguageTag(String)} for validity checking.
-     *
-     * @returns true or false
      */
     public static boolean checkLanguageTagBasicSyntax(String langTagStr) {
         return org.apache.jena.langtag.LangTags.basicCheck(langTagStr);
diff --git 
a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java 
b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index e0c44450e7..e83f47b8f3 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -19,7 +19,8 @@
 package org.apache.jena.rdf.model.impl;
 
 import java.io.*;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.*;
 import java.util.function.Supplier;
 
@@ -203,10 +204,12 @@ public class ModelCom extends EnhGraph implements Model, 
PrefixMapping, Lock
 
     @Override
     public Model read(String url, String base, String lang) {
-        try (InputStream is = new URL(url).openStream()) {
-            read(is, base, lang);
-        } catch (IOException e) {
+        try (InputStream in = new URI(url).toURL().openStream()) {
+            read(in, base, lang);
+        } catch (IOException  e) {
             throw new WrappedIOException(e);
+        } catch (URISyntaxException e) {
+            throw new JenaException(e);
         }
         return this;
     }
diff --git 
a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java 
b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
index 8fd6dcbfd2..7f8cdf342f 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/NTripleReader.java
@@ -18,8 +18,11 @@
 
 package org.apache.jena.rdf.model.impl;
 
-import java.io.*;
-import java.net.URL;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -81,10 +84,8 @@ public class NTripleReader extends Object implements 
RDFReaderI {
     @Override
     public void read(Model model, String url)  {
         try {
-            read(
-                model,
-                new InputStreamReader(((new URL(url))).openStream()),
-                url);
+            InputStream in = new URI(url).toURL().openStream();
+            read(model, in, url);
         } catch (Exception e) {
             throw new JenaException(e);
         } finally {
diff --git 
a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/RDFXMLReader.java 
b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/RDFXMLReader.java
index dc8813efa9..4d39162f87 100644
--- a/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/RDFXMLReader.java
+++ b/jena-core/src/main/java/org/apache/jena/rdfxml/xmlinput1/RDFXMLReader.java
@@ -19,9 +19,7 @@
 package org.apache.jena.rdfxml.xmlinput1;
 
 import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
+import java.net.*;
 import java.util.Locale ;
 
 import org.apache.jena.datatypes.RDFDatatype ;
@@ -106,7 +104,7 @@ public class RDFXMLReader implements RDFReaderI, 
ARPErrorNumbers {
             String connectionURL = url;
             URLConnection conn = null;
             while ( conn == null ) {
-                URLConnection conn2 = new URL(connectionURL).openConnection();
+                URLConnection conn2 = new 
URI(connectionURL).toURL().openConnection();
                 if ( ! ( conn2 instanceof HttpURLConnection ) ) {
                     conn = conn2;
                     break;
@@ -135,7 +133,7 @@ public class RDFXMLReader implements RDFReaderI, 
ARPErrorNumbers {
                 read(m, new InputStreamReader(conn.getInputStream(), 
encoding), url);
         } catch (FileNotFoundException e) {
             throw new DoesNotExistException(url);
-        } catch (IOException e) {
+        } catch (URISyntaxException | IOException e) {
             throw new JenaException(e);
         }
     }
diff --git a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java 
b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
index abaa6b0f1c..00a4a7f8ac 100644
--- a/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
+++ b/jena-core/src/main/java/org/apache/jena/util/FileUtils.java
@@ -19,7 +19,9 @@
 package org.apache.jena.util;
 
 import java.io.* ;
-import java.net.URL ;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.nio.charset.Charset ;
 import java.nio.charset.StandardCharsets ;
 import java.nio.file.Files;
@@ -329,8 +331,12 @@ public class FileUtils
     // TODO Replace with FileManager
     public static BufferedReader readerFromURL( String urlStr )
     {
-        try { return asBufferedUTF8( new URL(urlStr).openStream() ); }
-        catch (java.net.MalformedURLException e)
+        try {
+            InputStream conn = new URI(urlStr).toURL().openStream();
+
+            return asBufferedUTF8( conn );
+        }
+        catch (MalformedURLException | URISyntaxException e)
         { // Try as a plain filename.
             try { return asBufferedUTF8( new FileInputStream( urlStr ) ); }
             catch (FileNotFoundException f) { throw new WrappedIOException( f 
); }
diff --git 
a/jena-core/src/test/java/org/apache/jena/reasoner/test/WGReasonerTester.java 
b/jena-core/src/test/java/org/apache/jena/reasoner/test/WGReasonerTester.java
index 21ca27869c..6bf57d6fc1 100644
--- 
a/jena-core/src/test/java/org/apache/jena/reasoner/test/WGReasonerTester.java
+++ 
b/jena-core/src/test/java/org/apache/jena/reasoner/test/WGReasonerTester.java
@@ -22,13 +22,16 @@ import java.io.BufferedInputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.junit.Assert;
+
 import junit.framework.TestCase;
-import org.apache.jena.graph.GraphMemFactory;
 import org.apache.jena.graph.Graph;
+import org.apache.jena.graph.GraphMemFactory;
 import org.apache.jena.rdf.model.*;
 import org.apache.jena.rdf.model.impl.PropertyImpl;
 import org.apache.jena.rdf.model.impl.ResourceImpl;
@@ -38,7 +41,6 @@ import org.apache.jena.reasoner.Reasoner;
 import org.apache.jena.reasoner.ReasonerFactory;
 import org.apache.jena.shared.JenaException;
 import org.apache.jena.vocabulary.RDF;
-import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -152,7 +154,7 @@ public class WGReasonerTester {
      * @param file the file name, relative to baseDir
      * @return the loaded Model
      */
-    public Model loadFile(String file) throws IOException {
+    public Model loadFile(String file) {
         String langType = "RDF/XML";
         if (file.endsWith(".nt")) {
             langType = "N-TRIPLE";
@@ -169,17 +171,19 @@ public class WGReasonerTester {
          * Now use InputStream instead of Reader (general hygine).
          * Also treat http:.... as URL not local file.
          */
-        InputStream in;
-        if ( baseDir.startsWith("http:")) {
-               in = new URL(baseDir+fname).openStream();
-        } else {
-               in = new FileInputStream(baseDir + fname);
+        try {
+            InputStream in;
+            if ( baseDir.startsWith("http:") ) {
+                in = new URI(baseDir + fname).toURL().openStream();
+            } else {
+                in = new FileInputStream(baseDir + fname);
+            }
+            in = new BufferedInputStream(in);
+            result.read(in, BASE_URI + fname, langType);
+            return result;
+        } catch (IOException | URISyntaxException e) {
+            throw new JenaException(e);
         }
-        in = new BufferedInputStream(in);
-
-
-        result.read(in, BASE_URI + fname, langType);
-        return result;
     }
 
     /**
diff --git 
a/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java 
b/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
index d963f636d4..a2268bb7ef 100644
--- a/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
+++ b/jena-core/src/test/java/org/apache/jena/ttl_test/JenaReaderBase.java
@@ -47,7 +47,7 @@ public abstract class JenaReaderBase implements RDFReaderI {
     @Override
     final public void read(Model model, java.lang.String url) {
         try {
-            URLConnection conn = new URL(url).openConnection();
+            URLConnection conn = new URI(url).toURL().openConnection();
             String encoding = conn.getContentEncoding();
             read(model, new InputStreamReader(conn.getInputStream(), 
StandardCharsets.UTF_8), url);
         } catch (JenaException e) {
diff --git 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
index aff7df31c8..3a8ad411bd 100644
--- 
a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
+++ 
b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/ConvertersTest.java
@@ -18,19 +18,18 @@
 
 package org.apache.jena.arq.querybuilder;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
 
-import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
+import org.junit.After;
+import org.junit.Test;
+
 import org.apache.jena.datatypes.BaseDatatype;
 import org.apache.jena.datatypes.DatatypeFormatException;
 import org.apache.jena.datatypes.TypeMapper;
@@ -48,8 +47,6 @@ import org.apache.jena.sparql.path.P_Link;
 import org.apache.jena.sparql.path.Path;
 import org.apache.jena.sparql.util.NodeIsomorphismMap;
 import org.apache.jena.vocabulary.RDF;
-import org.junit.After;
-import org.junit.Test;
 
 public class ConvertersTest {
 
@@ -67,7 +64,7 @@ public class ConvertersTest {
     }
 
     @Test
-    public void makeLiteralObjectTest() throws MalformedURLException {
+    public void makeLiteralObjectTest() throws Exception {
         Node n = Converters.makeLiteral(5);
         assertEquals("5", n.getLiteralLexicalForm());
         assertEquals(Integer.valueOf(5), n.getLiteralValue());
@@ -79,7 +76,7 @@ public class ConvertersTest {
         assertEquals("Hello", n.getLiteralValue());
         assertEquals(XSDDatatype.XSDstring, n.getLiteralDatatype());
 
-        URL url = new URL("http://example.com";);
+        URL url = new URI("http://example.com";).toURL();
         n = Converters.makeLiteral(url);
         assertEquals("http://example.com";, n.getLiteralLexicalForm());
         assertEquals(url, n.getLiteralValue());
diff --git 
a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/claimingcache/RefImpl.java
 
b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/claimingcache/RefImpl.java
index 50dba90a77..2b89c2edd3 100644
--- 
a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/claimingcache/RefImpl.java
+++ 
b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/claimingcache/RefImpl.java
@@ -100,7 +100,7 @@ public class RefImpl<T>
      * Note: Actually this method should be replaced with an approach using 
Java 9 Cleaner
      * however I couldn't get the cleaner to run.
      */
-    @SuppressWarnings("deprecation")
+    @SuppressWarnings("removal")
     @Override
     protected void finalize() throws Throwable {
         try {
diff --git 
a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/util/AutoCloseableWithLeakDetectionBase.java
 
b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/util/AutoCloseableWithLeakDetectionBase.java
index 95a0269e5f..fd00da83f3 100644
--- 
a/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/util/AutoCloseableWithLeakDetectionBase.java
+++ 
b/jena-extras/jena-serviceenhancer/src/main/java/org/apache/jena/sparql/service/enhancer/impl/util/AutoCloseableWithLeakDetectionBase.java
@@ -41,7 +41,7 @@ public class AutoCloseableWithLeakDetectionBase
         return instantiationStackTrace;
     }
 
-    @SuppressWarnings("deprecation")
+    @SuppressWarnings("removal")
     @Override
     protected void finalize() throws Throwable {
         try {
diff --git 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/BuildLib.java
 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/BuildLib.java
index e54000bb62..10735c204d 100644
--- 
a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/BuildLib.java
+++ 
b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/build/BuildLib.java
@@ -21,12 +21,9 @@ package org.apache.jena.fuseki.build;
 import static org.apache.jena.fuseki.build.FusekiPrefixes.PREFIXES;
 
 import java.lang.reflect.Constructor;
-import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.Objects;
 
 import org.apache.jena.atlas.lib.Pair;
 import org.apache.jena.fuseki.Fuseki;
@@ -175,28 +172,18 @@ import org.apache.jena.vocabulary.RDFS;
             ? implementation.getLiteralLexicalForm()
             : implementation.getURI();
         String javaScheme = "java:";
-        String fileScheme = "file:";
         String scheme = null;
         if ( classURI.startsWith(javaScheme) ) {
             scheme = javaScheme;
-        } else if ( classURI.startsWith(fileScheme) ) {
-            scheme = fileScheme;
         } else {
-            Fuseki.configLog.error("Class to load is not 'java:' or 'file:': " 
+ classURI);
-            throw new FusekiConfigException("Not a 'java:' or 'file:' class 
reference: "+classURI);
+            Fuseki.configLog.error("Class to load is not 'java:' " + classURI);
+            throw new FusekiConfigException("Not a 'java:' class reference: 
"+classURI);
         }
         String className = classURI.substring(scheme.length());
 
         ActionService action = null;
         try {
-            Class<?> cls;
-            if ( Objects.equals(scheme, fileScheme) ) {
-                try ( URLClassLoader urlClassLoader = new URLClassLoader(new 
URL[] {new URL(classURI)}) ){
-                    cls = Class.forName(className, true, urlClassLoader);
-                }
-            } else {
-                cls = Class.forName(className);
-            }
+            Class<?> cls = Class.forName(className);
             Constructor<?> x = cls.getConstructor();
             action = (ActionService)x.newInstance();
         } catch (ClassNotFoundException ex) {
@@ -207,4 +194,44 @@ import org.apache.jena.vocabulary.RDFS;
         Operation op = Operation.alloc(NodeFactory.createBlankNode(), 
classURI, classURI);
         return Pair.create(op, action);
     }
+
+    // With file: file loading ...
+//    /** Load a class (an {@link ActionService}) and create an {@link 
Operation} for it. */
+//    /*package*/ static Pair<Operation, ActionService> 
loadOperationActionService(Graph graph, Node implementation) {
+//        String classURI = implementation.isLiteral()
+//            ? implementation.getLiteralLexicalForm()
+//            : implementation.getURI();
+//        String javaScheme = "java:";
+//        String fileScheme = "file:";
+//        String scheme = null;
+//        if ( classURI.startsWith(javaScheme) ) {
+//            scheme = javaScheme;
+//        } else if ( classURI.startsWith(fileScheme) ) {
+//            scheme = fileScheme;
+//        } else {
+//            Fuseki.configLog.error("Class to load is not 'java:' or 'file:': 
" + classURI);
+//            throw new FusekiConfigException("Not a 'java:' or 'file:' class 
reference: "+classURI);
+//        }
+//        String className = classURI.substring(scheme.length());
+//
+//        ActionService action = null;
+//        try {
+//            Class<?> cls;
+//            if ( Objects.equals(scheme, fileScheme) ) {
+//                try ( URLClassLoader urlClassLoader = new URLClassLoader(new 
URL[] {new URL(classURI)}) ){
+//                    cls = Class.forName(className, true, urlClassLoader);
+//                }
+//            } else {
+//                cls = Class.forName(className);
+//            }
+//            Constructor<?> x = cls.getConstructor();
+//            action = (ActionService)x.newInstance();
+//        } catch (ClassNotFoundException ex) {
+//            throw new FusekiConfigException("Class not found: " + className);
+//        } catch (Exception ex) {
+//            throw new FusekiConfigException("Can't create object from " + 
className);
+//        }
+//        Operation op = Operation.alloc(NodeFactory.createBlankNode(), 
classURI, classURI);
+//        return Pair.create(op, action);
+//    }
 }
diff --git 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
index 54f8e8db4a..0196573573 100644
--- 
a/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
+++ 
b/jena-fuseki2/jena-fuseki-main/src/test/java/org/apache/jena/fuseki/main/TestQuery.java
@@ -18,15 +18,16 @@
 
 package org.apache.jena.fuseki.main;
 
+import static org.apache.jena.http.HttpLib.newGetRequest;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
 import java.util.Iterator;
 
 import org.junit.jupiter.api.BeforeEach;
@@ -35,6 +36,7 @@ import org.junit.jupiter.api.Test;
 import org.apache.jena.atlas.json.JsonArray;
 import org.apache.jena.atlas.web.AcceptList;
 import org.apache.jena.atlas.web.MediaType;
+import org.apache.jena.atlas.web.TypedInputStream;
 import org.apache.jena.fuseki.DEF;
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.graph.Graph;
@@ -42,6 +44,8 @@ import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Triple;
 import org.apache.jena.http.HttpEnv;
+import org.apache.jena.http.HttpLib;
+import org.apache.jena.http.HttpOp;
 import org.apache.jena.query.*;
 import org.apache.jena.sparql.core.Quad;
 import org.apache.jena.sparql.core.Var;
@@ -108,9 +112,13 @@ public class TestQuery extends AbstractFusekiTest {
     @Test
     public void request_id_header_01() throws IOException {
         String qs = Convert.encWWWForm("ASK{}");
-        URL u = new URL(serviceQuery() + "?query=" + qs);
-        HttpURLConnection conn = (HttpURLConnection)u.openConnection();
-        assertTrue(conn.getHeaderField(Fuseki.FusekiRequestIdHeader) != null);
+        String url = serviceQuery() + "?query=" + qs;
+        HttpRequest request = newGetRequest(url, null);
+        HttpResponse<InputStream> response = 
HttpLib.execute(HttpEnv.getDftHttpClient(), request);
+        try (InputStream body = response.body()) {
+            
assertTrue(response.headers().firstValue(Fuseki.FusekiRequestIdHeader) != null);
+            HttpLib.finishInputStream(body);
+        }
     }
 
     @Test
@@ -267,7 +275,6 @@ public class TestQuery extends AbstractFusekiTest {
                     .queryString(query)
                     .acceptHeader(contentType)
                     .build();
-
             try ( qExec ) {
                 Graph graph = qExec.describe();
                 String x = qExec.getHttpResponseContentType();
@@ -290,17 +297,18 @@ public class TestQuery extends AbstractFusekiTest {
     public void query_json_02() throws IOException {
         String qs = Convert.encWWWForm("JSON { \"s\": ?s , \"p\": ?p , \"o\" : 
?o } "
                 + "WHERE { ?s ?p ?o }");
-        URL u = new URL(serviceQuery() + "?query=" + qs);
-        HttpURLConnection conn = (HttpURLConnection)u.openConnection();
+        String url = serviceQuery() + "?query=" + qs;
         String result = null;
-        StringBuilder sb = new StringBuilder();
-        try ( InputStream is = new BufferedInputStream(conn.getInputStream());
-              BufferedReader br = new BufferedReader(new 
InputStreamReader(is)) ) {
-            String inputLine = "";
-            while ((inputLine = br.readLine()) != null) {
-                sb.append(inputLine);
+        try ( TypedInputStream in = HttpOp.httpGet(url) ) {
+            StringBuilder sb = new StringBuilder();
+            try ( InputStream is = new BufferedInputStream(in);
+                  BufferedReader br = new BufferedReader(new 
InputStreamReader(is)) ) {
+                String inputLine = "";
+                while ((inputLine = br.readLine()) != null) {
+                    sb.append(inputLine);
+                }
+                result = sb.toString();
             }
-            result = sb.toString();
         }
         assertNotNull(result);
         assertTrue(result.contains("http://example/x";));
diff --git 
a/jena-geosparql/src/main/java/org/apache/jena/geosparql/spatial/task/TaskThread.java
 
b/jena-geosparql/src/main/java/org/apache/jena/geosparql/spatial/task/TaskThread.java
index 519778ea58..34241e5f52 100644
--- 
a/jena-geosparql/src/main/java/org/apache/jena/geosparql/spatial/task/TaskThread.java
+++ 
b/jena-geosparql/src/main/java/org/apache/jena/geosparql/spatial/task/TaskThread.java
@@ -214,9 +214,4 @@ public abstract class TaskThread
     public boolean isAborting() {
         return requestingCancel.get();
     }
-
-    @Override
-    public boolean isTerminated() {
-        return !isAlive();
-    }
 }

Reply via email to