This is an automated email from the ASF dual-hosted git repository. jungm pushed a commit to branch ee11 in repository https://gitbox.apache.org/repos/asf/tomee-tck.git
commit db34d69afcc4af5a4d2b212898dc09e701a07e43 Author: Markus Jung <[email protected]> AuthorDate: Sun Jul 19 01:20:22 2026 +0200 Bump the Jakarta Data TCK to the 1.0.1 certification release Pin jakarta.data-tck 1.0.1, pass jakarta.tck.database.type=RELATIONAL to the container JVM and surefire, and define java:comp/DefaultDataSource explicitly on embedded Derby so the persistence unit no longer auto-links to the network Derby datasources. Re-derive exclusions/data.txt from a 1.0.1 baseline (same 36 EntityTests methods) with per-feature-group attribution. --- KNOWN_ISSUES.md | 18 +++-- runner-standalone/README.md | 2 +- runner-standalone/data/pom.xml | 18 ++++- .../data/src/test/resources/arquillian.xml | 6 +- .../data/src/tomee-conf-filtered/tomee.xml | 11 +++ runner-standalone/exclusions/data.txt | 88 ++++++++++++++-------- 6 files changed, 99 insertions(+), 44 deletions(-) diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md index 1f4a379..1478563 100644 --- a/KNOWN_ISSUES.md +++ b/KNOWN_ISSUES.md @@ -24,7 +24,7 @@ Detail lives next to each runner: | annotations | passes | — | — | | di | 50/50 pass | — | — | | concurrency | 197 tests, 0 F + 0 E (14 TCK skips), signature passes | — | — | -| data | 99 tests, 7 F + 29 E | 36 methods (EntityTests only) | openejb-jakarta-data query generation | +| data | 99 tests, 7 F + 29 E | 36 methods (EntityTests only) | openejb-jakarta-data query generation (cursored pagination, JDQL translation, derived-query/ignoreCase, static-metamodel + sort ordering, update queries) | | servlet | 1,706 tests, 12 E | 2 classes (12 methods) | TomEE aborts context startup on a missing referenced servlet/filter class | | pages | 682/682 pass | — | — (needs the runner's spec-default encoding overlay) | | rest | 2,803 tests, 2 F + 1 E | 3 tests | Feature/DynamicFeature `META-INF/services` discovery (TOMEE-4321/CXF-9005) + 405-vs-404 matching | @@ -50,11 +50,17 @@ Fixes belong in Apache TomEE (or Tomcat); each removes exclusion entries. 1. **Jakarta Data query generation (openejb-jakarta-data)** — repositories materialize and inject correctly; the gaps sit in the queries the - provider generates for 36 `standalone.entity.EntityTests` methods: - `ignoreCase` state-field paths that EclipseLink cannot resolve, - literal/`NOT`/`OR`/parenthesis handling in `@Query` JDQL, empty/partial - query generation, cursored pagination, and static-metamodel sorts. All - entries in [data.txt](runner-standalone/exclusions/data.txt). + provider generates for 36 `standalone.entity.EntityTests` methods (Data + TCK 1.0.1), grouped by feature: cursored pagination returns a plain + `PageRecord` where the repository declares `CursoredPage` (6); + literal/`NOT`/`OR`/parenthesis/empty/partial `@Query` JDQL translates to + malformed EclipseLink JPQL (8); derived-query bodies and `ignoreCase` + state-field paths fail to compile (6); static-metamodel and find-first + derived methods do not resolve (4); `Sort`/`Order`/`PageRequest` sort + precedence — including the 1.0.1 enum-ordinal sort — is not applied and + multi-column projections come back as `Object[]` (10); and update `@Query` + methods run as selects (2). All entries, per group, in + [data.txt](runner-standalone/exclusions/data.txt). 2. **Servlet 6.1 deployment strictness** — TomEE aborts the whole context startup when a war references a servlet or filter class it does not package: the pluggability `RegistrationTests` deployment declares filter diff --git a/runner-standalone/README.md b/runner-standalone/README.md index 2ca5eec..13c7b2d 100644 --- a/runner-standalone/README.md +++ b/runner-standalone/README.md @@ -52,7 +52,7 @@ derived from; with the default exclusions applied these suites run green. | CDI 4.1 (core) + Interceptors 2.2 (non-EJB half) | `jakarta.enterprise:cdi-tck-core-impl:4.1.0` | `cdi` | **Runs: 1,388 tests, 81 failures, 82 skipped; mandatory CDI API signature test (`cdi-api-jdk17.sig`) passes** (2026-07-19). The failures cluster in the CDI 4.1 build-compatible-extensions feature (build-compatible extensions plus the Method Invokers the TCK registers through them) — OpenWebBeans 4.1 ships no `BuildServices` provider — to triage upstream. The runner carries the apac [...] | CDI 4.1 (EE integration) + Interceptors 2.2 (EJB half) | `jakarta.tck:cdi-tck-ee-impl:11.0.3` | `cdi-ee` | **Runs: 1,829 tests, 106 failures, 92 skipped** (2026-07-19, needs the 4 GB server heap configured in its arquillian.xml). Same OpenWebBeans 4.1 build-compatible-extensions gap as the core suite plus EE-integration issues; carries the same OpenWebBeans overlay and porting SPI | | Concurrency 3.1 | `jakarta.enterprise:jakarta.enterprise.concurrent-tck:3.1.1` | `concurrency` | **Passes 197 tests, 0 failures, 0 errors, 14 skipped (the TCK's own skips), signature test included, no exclusions** (2026-07-18). The runner sets `openejb.environment.default=true` (declares the `java:comp/Default*` resource-env-refs the TCK injects via `@Resource(lookup=…)`; without it they silently inject `null`), adds a `beans.xml` per WAR so OWB activates the TCK's `@Priority` `Asynchr [...] -| Data 1.0 | `jakarta.data:jakarta.data-tck:1.0.0` | `data` | **Runs: 99 tests, 7 failures, 29 errors** (2026-07-18), all in `standalone.entity.EntityTests`; the other six classes pass completely, signature test included. The runner's archive processor completes the TCK deployments the way a Jakarta Data runtime is expected to (adds the missing sibling classes, a `persistence.xml` on `java:comp/DefaultDataSource`, and a `beans.xml` with `bean-discovery-mode="all"` so `@Repository` interf [...] +| Data 1.0 | `jakarta.data:jakarta.data-tck:1.0.1` | `data` | **Runs: 99 tests, 7 failures, 29 errors**, all in `standalone.entity.EntityTests`; the other six classes pass completely, signature test included. Runs the 1.0.1 certification service release, which gates keyword-support assertions on `jakarta.tck.database.type=RELATIONAL` (set on the container JVM via `catalina_opts`) and rewrites the enum-sort entity. The runner's archive processor completes the TCK deployments the way a Jak [...] | RESTful Web Services 4.0 | EFTL zip (installed as `jakarta.ws.rs:jakarta-restful-ws-tck:4.0.1`) | `rest` | **Runs: 2,803 tests, 2 failures, 1 error, 128 skipped without exclusions** (2026-07-18, the skips are the TCK's own `@Disabled` tests) against TomEE's CXF, with the CXF client driving the client half of every test; the signature test passes. The runner sets `openejb.jaxrs.fail-on-constrainedto=false` in the server JVM (spec-required tolerance of bundled `@ConstrainedTo(CLIENT)` pr [...] | Servlet 6.1 | EFTL zip (installed as `jakarta.tck:servlet-tck-runtime:6.1.0`) | `servlet` | **Runs: 1,706 tests, 12 errors, 7 skipped** (2026-07-18). The harness is complete: slf4j-simple resolves at the TCK-derived version, the TCK's bundled client certificate is trusted and mapped (both client-cert tests pass, including the https-targeted deployment via a metadata observer reporting the TLS port), cross-context dispatch is enabled and the STRICT_SERVLET_COMPLIANCE subset (`alwaysAcce [...] | Pages 4.0 | EFTL zip (installed as `jakarta.tck:jakarta-pages-tck:4.0.0`) | `pages` | **Passes 682/682 (0 failures, 0 errors, signature test included, no exclusions)** (2026-07-18). Needs the Central `jakarta.tck:common`/`signaturetest` support line at 11.1.1 with sigtest 2.6 (the TCK pom's own pins depend on the unpublished JavaTest harness), and the overlay removes TomEE's global UTF-8 default encodings from conf/web.xml because the TCK asserts the spec default ISO-8859-1. Its TomEE/ [...] diff --git a/runner-standalone/data/pom.xml b/runner-standalone/data/pom.xml index 5fc5d34..1b7d746 100644 --- a/runner-standalone/data/pom.xml +++ b/runner-standalone/data/pom.xml @@ -24,7 +24,10 @@ </description> <properties> - <data.tck.version>1.0.0</data.tck.version> + <!-- 1.0.1 is the current service release required for certification; it + adds the RELATIONAL jakarta.tck.database.type gate and the enum-sort + rewrite (NaturalNumber @Enumerated(STRING) + numTypeOrdinal). --> + <data.tck.version>1.0.1</data.tck.version> <!-- Reviewed known-gap exclusions; point at exclusions/none.txt for a full baseline run. --> <tck.exclusions.file>${project.basedir}/../exclusions/data.txt</tck.exclusions.file> @@ -76,8 +79,10 @@ <scope>test</scope> </dependency> <!-- The generated persistence unit runs on java:comp/DefaultDataSource, - which TomEE materializes on embedded Derby; the engine jar is not - part of the shared client-only Derby staging. --> + which src/tomee-conf-filtered/tomee.xml defines as an explicit + embedded-Derby resource; that engine jar is staged into + tomee-overlay/lib here (the shared parent stages only the Derby + client). --> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> @@ -195,6 +200,13 @@ <systemPropertyVariables> <jakarta.tck.profile>core</jakarta.tck.profile> <jakarta.tck.skip.deployment>false</jakarta.tck.skip.deployment> + <!-- Data 1.0.1 gates its keyword-support assertions on the + database type; RELATIONAL matches the Derby-backed default + persistence unit. The in-container EntityTests read this from + the container JVM (set via arquillian.xml catalina_opts); it + is repeated here for the client-side deployment/signature + executions. --> + <jakarta.tck.database.type>RELATIONAL</jakarta.tck.database.type> <jimage.dir>${project.build.directory}/jimage</jimage.dir> <signature.sigTestClasspath>${data.sig.api.jar}</signature.sigTestClasspath> </systemPropertyVariables> diff --git a/runner-standalone/data/src/test/resources/arquillian.xml b/runner-standalone/data/src/test/resources/arquillian.xml index cd93a6c..f27a702 100644 --- a/runner-standalone/data/src/test/resources/arquillian.xml +++ b/runner-standalone/data/src/test/resources/arquillian.xml @@ -26,7 +26,11 @@ <property name="simpleLog">true</property> <!-- The Data TCK relies on auto-detected JUnit extensions inside the container and extracts the JDK image for its signature test. --> - <property name="catalina_opts">-Djunit.jupiter.extensions.autodetection.enabled=true -Djimage.dir=${project.build.directory}/jimage --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property> + <!-- jakarta.tck.database.type gates Data 1.0.1's keyword-support + assertions; EntityTests runs in-container and reads it from the + container JVM. RELATIONAL matches the embedded-Derby default + persistence unit. --> + <property name="catalina_opts">-Djunit.jupiter.extensions.autodetection.enabled=true -Djimage.dir=${project.build.directory}/jimage -Djakarta.tck.database.type=RELATIONAL --add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property> <!-- Declares the java:comp/Default* resource-env-refs (incl. DefaultDataSource used by the generated persistence.xml); without it @Resource(lookup="java:comp/Default...") injections stay null diff --git a/runner-standalone/data/src/tomee-conf-filtered/tomee.xml b/runner-standalone/data/src/tomee-conf-filtered/tomee.xml index e76f9fa..abc8467 100644 --- a/runner-standalone/data/src/tomee-conf-filtered/tomee.xml +++ b/runner-standalone/data/src/tomee-conf-filtered/tomee.xml @@ -4,6 +4,17 @@ overlay tomee.xml so the TCK's jdbc/DataTCK datasource is available in addition to the standard TCK datasources. --> <openejb> + <!-- The generated persistence unit's <jta-data-source> is + java:comp/DefaultDataSource. Define it explicitly on embedded Derby + (engine jar staged into tomee-overlay/lib by the runner) so the + auto-link resolves here instead of falling through to the first + network-Derby DataSource below. It is listed first so TomEE's + first-matching-DataSource auto-link also picks it. --> + <Resource id="DefaultDataSource" type="DataSource"> + JdbcDriver org.apache.derby.jdbc.EmbeddedDriver + JdbcUrl jdbc:derby:${project.build.directory}/derby/dataTckDB;create=true + </Resource> + <Resource id="jdbc/DB1" type="DataSource"> JdbcDriver org.apache.derby.jdbc.ClientDriver JdbcUrl jdbc:derby://localhost:${tck.derby.port}/derbyDB;create=true diff --git a/runner-standalone/exclusions/data.txt b/runner-standalone/exclusions/data.txt index cf3de06..33c258b 100644 --- a/runner-standalone/exclusions/data.txt +++ b/runner-standalone/exclusions/data.txt @@ -1,8 +1,8 @@ -# Jakarta Data 1.0 TCK (jakarta.data:jakarta.data-tck:1.0.0, web+persistence -# groups) on the TomEE Plume snapshot, Java 21, 2026-07-18: 99 tests, 7 -# failures, 29 errors, all in standalone.entity.EntityTests. The other six -# classes (CDI, persistence-entity, signature, servlet example, transaction, -# validation) pass completely. +# Jakarta Data 1.0 TCK (jakarta.data:jakarta.data-tck:1.0.1, web+persistence +# groups) on the TomEE Plume snapshot, Java 21: 99 tests, 7 failures, 29 +# errors, all in standalone.entity.EntityTests. The other six classes (CDI, +# persistence-entity, signature, servlet example, transaction, validation) +# pass completely. # # The runner's DataTckArchiveProcessor completes the TCK deployments the # way the Jakarta Data runtime is expected to (a persistence.xml on @@ -10,53 +10,75 @@ # bean-discovery-mode="all" so @Repository interfaces are scanned and # materialized; same as apache/tomee tck/data-standalone), the container # declares the java:comp/Default* refs via openejb.environment.default=true, -# and the Derby engine jar is staged for the embedded DefaultDataSource. -# Removing any of these fails whole deployments or nulls every repository -# injection. +# and src/tomee-conf-filtered/tomee.xml defines DefaultDataSource explicitly +# on embedded Derby (engine jar staged into tomee-overlay/lib). Removing any +# of these fails whole deployments or nulls every repository injection. # -# The 36 excluded EntityTests methods are openejb-jakarta-data -# gaps in query generation/translation for the unmapped-superclass entity: -# ignoreCase state-field paths, literal/parenthesis/NOT/OR handling in -# @Query JDQL, cursored pagination, empty/partial queries, and static -# metamodel sorts. +# Data 1.0.1 is the certification service release; it adds the RELATIONAL +# jakarta.tck.database.type gate (passed to the container JVM) and rewrites +# the enum-sort entity (NaturalNumber @Enumerated(STRING) + numTypeOrdinal, +# findByIdBetween...OrderByNumTypeOrdinalAsc). The failing set is identical +# to 1.0.0: the same 36 EntityTests methods, attributed below to the +# openejb-jakarta-data query-generation gap they exercise. # # Format: maven-surefire excludesFile patterns, applied through # -Dtck.exclusions.file (see runner-standalone/README.md). -# EntityTests: 7 failures + 29 errors -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testBasicRepository -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCommonInterfaceQueries +# Cursored pagination: the provider returns a plain PageRecord where the +# repository declares CursoredPage (ClassCastException). 6 methods. **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCursoredPageOf7FromCursor **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCursoredPageOfNothing **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCursoredPageWithoutTotalOf9FromCursor **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCursoredPageWithoutTotalOfNothing -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testDataRepository -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testEmptyQuery -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testEmptyResultException -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindAllWithPagination -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindFirst -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindFirst3 -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindList -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindPage **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFirstCursoredPageOf8AndNextPages **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFirstCursoredPageWithoutTotalOf6AndNextPages -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testIgnoreCase + +# @Query JDQL translation: literal/NOT/OR/parenthesis/empty/partial-select +# clauses translate to malformed EclipseLink JPQL (Syntax error parsing). +# 8 methods. +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testCommonInterfaceQueries +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testEmptyQuery **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testLiteralInteger **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testLiteralTrue -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testMixedSort -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testNonUniqueResultException -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testNot -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testOrderByHasPrecedenceOverPageRequestSorts -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testOrderByHasPrecedenceOverSorts **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testPartialQuerySelectAndOrderBy -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testPrimaryEntityClassDeterminedByLifeCycleMethods **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testQueryWithNot **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testQueryWithNull -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testQueryWithOr **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testQueryWithParenthesis + +# Derived-query generation on the unmapped-superclass entity: ignoreCase +# state-field paths and count/exists/select bodies EclipseLink cannot +# compile (Problem compiling [SELECT e FROM ...]). 6 methods. +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testDataRepository +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testEmptyResultException +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindPage +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testIgnoreCase +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testPrimaryEntityClassDeterminedByLifeCycleMethods **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testSingleEntity + +# Static-metamodel / find-first derived methods: the provider cannot resolve +# the generated repository method (Cannot resolve method: findFirst...). 4 +# methods. +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindFirst +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindFirst3 **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testStaticMetamodelDescendingSorts **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testStaticMetamodelDescendingSortsPreGenerated + +# Sort ordering: Sort/Order/PageRequest sort precedence (including the 1.0.1 +# enum-ordinal sort) is not applied, so the result order differs from the +# spec's expected sequence, and multi-column projections come back as +# Object[] instead of the entity type. 10 methods. +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testBasicRepository +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindAllWithPagination +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testFindList +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testMixedSort +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testNonUniqueResultException +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testNot +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testOrderByHasPrecedenceOverPageRequestSorts +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testOrderByHasPrecedenceOverSorts +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testQueryWithOr +**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testVarargsSort + +# Update @Query methods: the generated statement is executed as a select, so +# getSingleResult() rejects it (incorrect query type). 2 methods. **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testUpdateQueryWithWhereClause **/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testUpdateQueryWithoutWhereClause -**/ee/jakarta/tck/data/standalone/entity/EntityTests.java#testVarargsSort
