OWASP / OWASP/owasp-java-encoder
Fix JPMS dependency reads in the JSP, Jakarta, and ESAPI adapters
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 541
- フォーク
- 122
- 平均マージ
- 9時間 9分
- マージ済み PR(30日)
- 1
説明
Follow-up to #90 (reviewed at 31588e1). This tracks work intentionally kept separate from the modernization PR.
Problem and evidence
The explicit descriptors in jsp/src/main/java9/module-info.java, jakarta/src/main/java9/module-info.java, and esapi/src/main/java9/module-info.java require only owasp.encoder. They do not declare reads for their external API dependencies.
Consumer execution on JDK 17 reproduced:
- Loading
org.owasp.encoder.tag.ForHtmlTagfrom the JSP module fails withIllegalAccessError:owasp.encoder.jspdoes not readjavax.servlet.jsp.api. - The equivalent Jakarta consumer fails because
owasp.encoder.jakartadoes not readjakarta.servlet.jsp. - Calling
ESAPIEncoder.getInstance()with the adapter on the module path and ESAPI on the classpath fails because the adapter does not read the unnamed module.
The same failures occur with published 1.4.0. These are pre-existing issues, not regressions introduced by #90. Merely running jar --describe-module does not exercise these linkage failures.
Acceptance criteria
- Determine and document supported module-path dependency arrangements and API versions for each adapter.
- Correct descriptors, including transitive readability where required by exposed public APIs; use real dependency module names verified against the supported artifacts.
- Add isolated named-module consumers that instantiate/use JSP and Jakarta tags and call the ESAPI adapter. Test the two JSP variants separately because they share a package name.
- Positive tests work without broad
--add-readsor--add-opensworkarounds. - Retain classpath/container behavior, provided dependency scopes, existing public APIs, Java 8 base bytecode, published automatic-module names, explicit module identities, and OSGi metadata.
Related historical module support discussion: #66.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
jsp/src/main/java9/module-info.java、jakarta/src/main/java9/module-info.java、esapi/src/main/java9/module-info.java にある3つの Java 9 ディスクリプタから始め、次に issue に記載された JDK 17 のコンシューマーの失敗を再現します。サポートされている依存関係の構成とモジュール名を検証し、両方の JSP バリアントと ESAPI 用に分離された Named-Module コンシューマーを追加し、広範な read や open の workaround を使わずに module-path の正常系テストを確認します。その際、classpath と公開済みメタデータの動作は維持します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java
- 領域
- build-system, testing-qa
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 52/100