Mercurial > hg > monetdb-java
changeset 769:b6d113ee35ae
Fixed javac version 20 compiler warnings.
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.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 06 Jul 2023 18:28:10 +0200 (21 months ago) |
parents | a80c21fe7bb2 |
children | 1b9fe515f574 |
files | SQLSTATEs src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java src/main/java/org/monetdb/jdbc/MonetResultSet.java src/main/java/org/monetdb/jdbc/types/URL.java tests/JDBC_API_Tester.java |
diffstat | 5 files changed, 60 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/SQLSTATEs +++ b/SQLSTATEs @@ -24,9 +24,9 @@ 0AM34 Java generics not supported 22M28 invalid BLOB format 22M29 invalid inet format -22M30 invalid url format -22M31 invalid uuid format -22M32 invalid json format +22M30 invalid URL format +22M31 invalid UUID format +22M32 invalid JSON format 2BM37 dependent objects still exist 2DM30 autocommit mode active
--- a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java +++ b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java @@ -1887,8 +1887,10 @@ public class MonetPreparedStatement try { // also check if x represents a valid url string to prevent // failing exec #(..., ...) calls which destroy the prepared statement, see bug 6351 - java.net.URL url_obj = new java.net.URL(x); - } catch (java.net.MalformedURLException mue) { + // 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) + java.net.URL url_obj = new java.net.URI(x).toURL(); + } catch (java.net.URISyntaxException | java.net.MalformedURLException mue) { throw new SQLDataException("Conversion of string: " + x + " to parameter data type " + paramMonetdbType + " failed. " + mue.getMessage(), "22M30"); } castprefix = "url ";
--- a/src/main/java/org/monetdb/jdbc/MonetResultSet.java +++ b/src/main/java/org/monetdb/jdbc/MonetResultSet.java @@ -2463,9 +2463,11 @@ public class MonetResultSet } lastReadWasNull = false; try { - return new URL(val); - } catch (java.net.MalformedURLException e) { - throw new SQLException(e.getMessage(), "M1M05"); + // 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) + return new java.net.URI(val).toURL(); + } catch (java.net.URISyntaxException | java.net.MalformedURLException e) { + throw new SQLException(e.getMessage(), "22M30"); } } catch (IndexOutOfBoundsException e) { throw newSQLInvalidColumnIndexException(columnIndex);
--- a/src/main/java/org/monetdb/jdbc/types/URL.java +++ b/src/main/java/org/monetdb/jdbc/types/URL.java @@ -8,6 +8,7 @@ package org.monetdb.jdbc.types; +import java.sql.SQLDataException; import java.sql.SQLException; /** @@ -15,13 +16,23 @@ import java.sql.SQLException; * It represents an URL, that is, a well-formed string conforming to RFC2396. */ public final class URL implements java.sql.SQLData { + /** String url */ private String url; + /** + * String getSQLTypeName() + * @return String the type name + */ @Override public String getSQLTypeName() { return "url"; } + /** + * void readSQL(final java.sql.SQLInput stream, final String typeName) + * @param stream a java.sql.SQLInput stream + * @param typeName the type name + */ @Override public void readSQL(final java.sql.SQLInput stream, final String typeName) throws SQLException { if (!"url".equals(typeName)) @@ -29,16 +40,29 @@ public final class URL implements java.s url = stream.readString(); } + /** + * void writeSQL(final java.sql.SQLOutput stream) + * @param stream a java.sql.SQLOutput stream + */ @Override public void writeSQL(final java.sql.SQLOutput stream) throws SQLException { stream.writeString(url); } + /** + * String toString() + * @return String the url string + */ @Override public String toString() { return url; } + /** + * void fromString(final String newurl) + * @param newurl the new url string + * @throws Exception when conversion of newurl string to URI or URL object fails + */ public void fromString(final String newurl) throws Exception { if (newurl == null) { url = newurl; @@ -46,23 +70,36 @@ public final class URL implements java.s } // parse the newurl on validity - new java.net.URL(newurl); - // if above doesn't fail (throws an Exception), it is fine + // 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) + new java.net.URI(newurl).toURL(); + // if above doesn't fail (throws an java.net.URISyntaxException | java.net.MalformedURLException), it is fine url = newurl; } - public java.net.URL getURL() throws SQLException { + /** + * java.net.URL getURL() + * @return URL an url object + * @throws SQLDataException when conversion of url string to URL object fails + */ + public java.net.URL getURL() throws SQLDataException { if (url == null) return null; try { - return new java.net.URL(url); - } catch (java.net.MalformedURLException mue) { - throw new java.sql.SQLDataException("data is not a valid URL: " + mue.getMessage(), "22M30"); + // Note: as of java 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) + return new java.net.URI(url).toURL(); + } catch (java.net.URISyntaxException | java.net.MalformedURLException mue) { + throw new SQLDataException("data is not a valid URL: " + mue.getMessage(), "22M30"); } } - public void setURL(final java.net.URL nurl) throws Exception { + /** + * void setURL(final java.net.URL nurl) + * @param nurl a java.net.URL object + */ + public void setURL(final java.net.URL nurl) { url = nurl.toString(); } }
--- a/tests/JDBC_API_Tester.java +++ b/tests/JDBC_API_Tester.java @@ -3245,8 +3245,8 @@ final public class JDBC_API_Tester { cstmt.setDouble(2, 3.02); cstmt.setString(4, "Tree"); try { - cstmt.setURL(6, new java.net.URL("https://www.monetdb.org/")); - } catch (java.net.MalformedURLException mfue) { + cstmt.setURL(6, new java.net.URI("https://www.monetdb.org/").toURL()); + } catch (java.net.URISyntaxException | java.net.MalformedURLException mfue) { sb.append("Invalid URL: ").append(mfue.getMessage()).append("\n"); } cstmt.execute(); @@ -5776,8 +5776,8 @@ final public class JDBC_API_Tester { pstmt.setObject(3, "[3.1415E-06]"); pstmt.setNull(4, 0); try { - pstmt.setURL(5, new java.net.URL("https://www.cwi.nl/")); - } catch (java.net.MalformedURLException mfe) { + pstmt.setURL(5, new java.net.URI("https://www.cwi.nl/").toURL()); + } catch (java.net.URISyntaxException | java.net.MalformedURLException mfe) { sb.append(mfe).append("\n"); } sb.append("Inserting row ").append(row).append("\n");