OWASP / OWASP/owasp-java-encoder
Fix JPMS dependency reads in the JSP, Jakarta, and ESAPI adapters
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 543
- Forks
- 122
- Merge medio
- 9 h 9 min
- PR fusionados (30 d)
- 1
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con los tres descriptores de Java 9 en jsp/src/main/java9/module-info.java, jakarta/src/main/java9/module-info.java y esapi/src/main/java9/module-info.java, y después reproduce los fallos de consumidores de JDK 17 descritos en el issue. Verifica las disposiciones de dependencias y los nombres de módulos compatibles, añade consumidores de Named-Module aislados para ambas variantes de JSP y ESAPI, y confirma pruebas positivas de module-path sin workarounds amplios de read u open, preservando el comportamiento de classpath y de los metadatos publicados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- build-system, testing-qa
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 52/100