Changeset: 1b9fe515f574 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/1b9fe515f574
Modified Files:
        src/main/java/org/monetdb/client/JdbcClient.java
Branch: default
Log Message:

Fixed javac version 20 compiler warning.
The java.net.URL(String) constructor is deprecated since version 20.
It needs to be replaced by: java.net.URI(String).toURL() and some extra 
Exception catching.


diffs (87 lines):

diff --git a/src/main/java/org/monetdb/client/JdbcClient.java 
b/src/main/java/org/monetdb/client/JdbcClient.java
--- a/src/main/java/org/monetdb/client/JdbcClient.java
+++ b/src/main/java/org/monetdb/client/JdbcClient.java
@@ -26,6 +26,7 @@ import java.io.InputStreamReader;
 import java.io.File;
 import java.io.PrintWriter;
 import java.net.HttpURLConnection;
+import java.net.URI;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.sql.Connection;
@@ -580,42 +581,46 @@ public final class JdbcClient {
         */
        static BufferedReader getReader(final String uri) throws Exception {
                BufferedReader ret = null;
-               URL u = null;
 
-               // Try and parse as URL first
-               try {
-                       u = new URL(uri);
-               } catch (java.net.MalformedURLException e) {
-                       // no URL, try as file
+               if (uri.contains(":")) {
+                       // Try and parse as URL
                        try {
-                               ret = new BufferedReader(new 
java.io.FileReader(uri));
-                       } catch (java.io.FileNotFoundException fnfe) {
-                               // the message is descriptive enough, adds "(No 
such file
-                               // or directory)" itself.
-                               throw new Exception(fnfe.getMessage());
+                               // Note: as of Java version 20 
java.net.URL(String) constructor is deprecated.
+                               // 
https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/net/URL.html#%3Cinit%3E(java.lang.String)
+                               final URI u = new java.net.URI(uri);
+                               // the URL must start with a scheme such as: 
"http:" or "https:" else u.toURL() errors
+                               if (u.isAbsolute()) {
+                                       final URL url = u.toURL();
+                                       
HttpURLConnection.setFollowRedirects(true);
+                                       final HttpURLConnection con = 
(HttpURLConnection)url.openConnection();
+                                       con.setRequestMethod("GET");
+                                       final String ct = con.getContentType();
+                                       if ("application/x-gzip".equals(ct)) {
+                                               // open gzip stream
+                                               ret = new BufferedReader(new 
InputStreamReader(
+                                                       new 
java.util.zip.GZIPInputStream(con.getInputStream())));
+                                       } else {
+                                               // text/plain otherwise just 
attempt to read as is
+                                               ret = new BufferedReader(new 
InputStreamReader(con.getInputStream()));
+                                       }
+                               }
+                       } catch (IOException e) {
+                               // failed to open the url
+                               throw new Exception("No such http host/file: " 
+ e.getMessage());
+                       } catch (Exception e) {
+                               // this is an exception that comes from deep ...
+                               throw new Exception("Invalid URL: " + uri + 
"\n" + e.getMessage());
                        }
                }
 
                if (ret == null) {
+                       // uri doesn't contain a ":" or is not an URL, so 
probably a file name
                        try {
-                               HttpURLConnection.setFollowRedirects(true);
-                               final HttpURLConnection con = 
(HttpURLConnection)u.openConnection();
-                               con.setRequestMethod("GET");
-                               final String ct = con.getContentType();
-                               if ("application/x-gzip".equals(ct)) {
-                                       // open gzip stream
-                                       ret = new BufferedReader(new 
InputStreamReader(
-                                                       new 
java.util.zip.GZIPInputStream(con.getInputStream())));
-                               } else {
-                                       // text/plain otherwise just attempt to 
read as is
-                                       ret = new BufferedReader(new 
InputStreamReader(con.getInputStream()));
-                               }
-                       } catch (IOException e) {
-                               // failed to open the url
-                               throw new Exception("No such host/file: " + 
e.getMessage());
-                       } catch (Exception e) {
-                               // this is an exception that comes from deep ...
-                               throw new Exception("Invalid URL: " + 
e.getMessage());
+                               ret = new BufferedReader(new 
java.io.FileReader(uri));
+                       } catch (java.io.FileNotFoundException fnfe) {
+                               // the message is descriptive enough,
+                               // adds "(No such file or directory)" itself.
+                               throw new Exception(fnfe.getMessage());
                        }
                }
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to