Class ClasspathResourceValidator

java.lang.Object
com.streamconverter.util.ClasspathResourceValidator

public final class ClasspathResourceValidator extends Object
クラスパスリソースの取得を行うユーティリティクラス

JAR内にバンドルされたリソースを安全に取得します。

セキュリティ:

  • ClassLoaderはクラスパス内でパス正規化を行う("hoge/../fuga" → "fuga")
  • クラスパス境界外へのアクセスは不可能("../etc/passwd" → リソース未発見)
  • JAR内リソースは読み取り専用(改ざん不可)
  • シンボリックリンク攻撃は不可能(ファイルシステムではない)

用途:

  • スキーマファイル(XSD, JSON Schema等)
  • テンプレートファイル
  • 設定ファイル(application.properties等)
  • Method Details

    • getResourceAsStream

      public static InputStream getResourceAsStream(String resourcePath)
      クラスパスリソースを取得します

      ClassLoaderを使用してリソースを取得します。クラスパス境界外へのアクセスは不可能です。

      注意事項:

      • リソース名はスラッシュ(/)区切りで指定(例: "schemas/test.xsd")
      • 先頭にスラッシュを含めない(ClassLoaderの仕様)
      • パス正規化あり: "hoge/../fuga" → "fuga" として解決される
      • クラスパス外アクセス不可: "../etc/passwd" → リソース未発見
      Parameters:
      resourcePath - クラスパスからの相対パス(例: "schemas/test.xsd")
      Returns:
      リソースのInputStream
      Throws:
      NullPointerException - パスがnullの場合
      IllegalArgumentException - パスが空、またはリソースが存在しない場合
    • getResourceUrl

      public static URL getResourceUrl(String resourcePath)
      クラスパスリソースのURLを取得します

      ClassLoaderを使用してリソースを取得します。クラスパス境界外へのアクセスは不可能です。

      注意事項:

      • リソース名はスラッシュ(/)区切りで指定(例: "schemas/test.xsd")
      • 先頭にスラッシュを含めない(ClassLoaderの仕様)
      • パス正規化あり: "hoge/../fuga" → "fuga" として解決される
      • クラスパス外アクセス不可: "../etc/passwd" → リソース未発見
      Parameters:
      resourcePath - クラスパスからの相対パス
      Returns:
      リソースのURL
      Throws:
      NullPointerException - パスがnullの場合
      IllegalArgumentException - パスが空、またはリソースが存在しない場合