kyukyunyorituryo / AozoraEpub3

青空文庫テキスト→ePub3変換
http://www18.atwiki.jp/hmdev/
Other
145 stars 14 forks source link

URLコンストラクタの警告解決 #22

Closed happynow closed 9 months ago

happynow commented 9 months ago

Fix URL constructor warning

主な修正

「JDK 20 - URL パブリック コンストラクターの非推奨化^1」の対応のため new URL(引数)new URI(引数).toURL() の置き換えを施しました。 下の参考ページにも書いてありますが、URIクラスと toURL メソッドは もともと Java SE 1.0 [^2] の頃からあったようです。

参考ページ (1) https://logico-jp.io/2023/02/20/quality-outreach-heads-up-jdk-20-deprecate-url-public-constructors/ (2) JDK 20 – Deprecate URL Public Constructors

なお、URI のコンストラクタと toURL メソッドは例外を発生させる恐れがあります。 例外を拾う場所は、現行と同じか呼び出し元で拾うようにしました。

[^2]: とりあえず SE 1.4 の Java doc で確認 https://docs.oracle.com/javase/jp/1.4/api/java/net/URI.html

その他の修正

JConfirmDialog.java 14行目 import java.io.IOException; は未使用のため、削除

WebAozoraConverter.java 311行目 boolean pager = toc_index.isEmpty(); は未使用のため、コメントアウト

happynow commented 9 months ago

(参考) コンストラクタ引数のコンペア

下記のコマンドは、全ソース・ファイルを検索して new URL(imageURLPath+"next.png"); のような呼び出しから imageURLPath+"next.png" といった引数を抽出しリスト化します。 修正前と修正後のふたつから抽出したリストを比べると同一であることが分かります。 このコマンドを使う場合はカレントディレクトリを src ディレクトリにして使って下さい。

【修正前】コンストラクタ実引数の抽出 (※)

UNIX系 grep -r -P --include '*.java' '\bnew\s+URL\b' ./* | sed -r 's/^([^:]+?):.*?\bnew\s+URL\s*\(\s*([^\(\)]*?(\(\))?[^\(\)]*?)\).*$/\1\t\2/g'

windows は powershell で

Get-ChildItem -Recurse -Filter "*.java" | Select-String -Pattern "\bnew\s+URL\s*\(\s*([^\(\)]*?(\(\))?[^\(\)]*?)\)" | % { $_.Filename + [char]9 + $_.Matches.Groups[1].Value}

【修正後】コンストラクタ実引数の抽出

UNIX系 grep -r -P --include '*.java' '\bnew\s+URI\b.*?\.toURL' ./* | sed -r 's/^([^:]+?):.*?\bnew\s+URI\s*\(\s*(.*?)\)\s*\.toURL.*$/\1\t\2/g'

windows は powershell で

Get-ChildItem -Recurse -Filter "*.java" | Select-String -Pattern "\bnew\s+URI\s*\(\s*(.*?)\)\s*\.toURL" | % { $_.Filename + [char]9 + $_.Matches.Groups[1].Value}

(※)正規表現では括弧の入れ子の解析は出来ないため修正前は以下のいずれかしか検索してません。