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 da8bdfc730a1f506929ed4e8ca3cd6bafd5f4d3b
Author: Markus Jung <[email protected]>
AuthorDate: Sat Jul 18 22:36:06 2026 +0200

    Trim the REST TCK exclusions to 3 via constrainedto tolerance and the 
URLConnection conduit
    
    The rest runner passes openejb.jaxrs.fail-on-constrainedto=false to the
    server JVM through catalina_opts, so TomEE ignores the TCK's
    @ConstrainedTo(CLIENT) provider (the spec-required behavior) instead of
    rejecting the deployment, and pins the CXF client to the HttpURLConnection
    conduit (org.apache.cxf.transport.http.forceURLConnection=true), whose
    async-conduit no-entity handling is tracked upstream as CXF-9039. A full
    run without exclusions scores 2,803 tests, 2 failures, 1 error; the three
    remaining product results (Feature/DynamicFeature META-INF/services
    discovery — TOMEE-4321/CXF-9005 — and 405-vs-404 superclass @Path
    matching) stay excluded, and the suite is green with the reviewed list.
---
 KNOWN_ISSUES.md                                    | 25 +++++++++-------
 runner-standalone/README.md                        |  2 +-
 runner-standalone/exclusions/rest.txt              | 35 +++++++---------------
 runner-standalone/rest/pom.xml                     |  5 ++++
 .../rest/src/test/resources/arquillian.xml         |  8 +++--
 5 files changed, 36 insertions(+), 39 deletions(-)

diff --git a/KNOWN_ISSUES.md b/KNOWN_ISSUES.md
index 6fe2b80..7f8e727 100644
--- a/KNOWN_ISSUES.md
+++ b/KNOWN_ISSUES.md
@@ -27,7 +27,7 @@ Detail lives next to each runner:
 | data | 99 tests, 7 F + 29 E | 36 methods (EntityTests only) | 
openejb-jakarta-data query generation |
 | 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, 4 F + 11 E | 14 tests | TomEE/CXF gaps (1 error was a 
fixed harness classpath gap) |
+| rest | 2,803 tests, 2 F + 1 E | 3 tests | Feature/DynamicFeature 
`META-INF/services` discovery (TOMEE-4321/CXF-9005) + 405-vs-404 matching |
 | validation | 1,049 tests, 0 F (incl. signature test) | — | — (server pins 
the JAXB RI; see product gaps) |
 | cdi (core) | 1,388 run, 90 F | 63 methods + 27 deploy-failing classes | 
OpenWebBeans 4.1 gaps |
 | cdi-ee | 1,829 run, 117 F | 87 methods + 30 deploy-failing classes | 
OpenWebBeans 4.1 + EE integration |
@@ -63,16 +63,19 @@ Fixes belong in Apache TomEE (or Tomcat); each removes 
exclusion entries.
    fail to start and every method in each class errors on the missing
    deployment URL. 2 class entries (12 methods) in
    [servlet.txt](runner-standalone/exclusions/servlet.txt).
-4. **RESTful Web Services 4.0** — TomEE refuses to deploy an application
-   bundling a `@ConstrainedTo(RuntimeType.CLIENT)` provider
-   (`IllegalArgumentException: ... is not a SERVER provider` from
-   `TomeeJaxRsService`) where the spec requires ignoring it; REST 3.1
-   `META-INF/services` discovery of `Feature`/`DynamicFeature` is not
-   implemented; `ContainerRequestContext.getLength()`/`HttpHeaders
-   .getLength()` no-entity semantics differ; the CXF client answers
-   `hasEntity() == true` for entity-less responses; and an unmatched
-   subresource path answers 405 where 404 is required. 14 entries in
-   [rest.txt](runner-standalone/exclusions/rest.txt).
+4. **RESTful Web Services 4.0** — REST 3.1 `META-INF/services` discovery of
+   `Feature`/`DynamicFeature` is not implemented (TOMEE-4321, CXF-9005), and
+   a request to a path only matching the superclass `@Path` answers 405
+   where the spec requires 404. 3 entries in
+   [rest.txt](runner-standalone/exclusions/rest.txt). The runner sets
+   `openejb.jaxrs.fail-on-constrainedto=false` in the server JVM — TomEE's
+   strict default rejects deployments bundling a
+   `@ConstrainedTo(RuntimeType.CLIENT)` provider where the spec requires
+   ignoring it — and pins the CXF client to the `HttpURLConnection` conduit
+   (`org.apache.cxf.transport.http.forceURLConnection=true`); the async
+   conduit's no-entity handling, tracked upstream as
+   [CXF-9039](https://issues.apache.org/jira/browse/CXF-9039), otherwise
+   fails the `getLength()`/`hasEntity()` assertions.
 5. **Faces descriptor parsing** — TomEE's `faces-config.xml` unmarshaller
    rejects the `xsi:schemaLocation` attribute that Faces 4.1 descriptors
    carry, so affected applications never deploy. Dominant cause of the 31
diff --git a/runner-standalone/README.md b/runner-standalone/README.md
index 86d2a11..019ca2a 100644
--- a/runner-standalone/README.md
+++ b/runner-standalone/README.md
@@ -53,7 +53,7 @@ derived from; with the default exclusions applied these 
suites run green.
 | 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, 117 
failures, 92 skipped** (2026-07-18, needs the 4 GB server heap configured in 
its arquillian.xml) |
 | 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 [...]
-| RESTful Web Services 4.0 | EFTL zip (installed as 
`jakarta.ws.rs:jakarta-restful-ws-tck:4.0.1`) | `rest` | **Runs: 2,803 tests, 4 
failures, 11 errors, 128 skipped** (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. One error was a harness 
classpath gap (the CXF client needs `cxf-rt-rs-extension-providers` for 
spec-required JSON-B support) and is fixed in the runner; the  [...]
+| 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/ [...]
 | Validation 3.1 | EFTL zip (installed as 
`jakarta.validation:validation-tck-tests:3.1.1`) | `validation` | **Runs: 1,049 
tests, 0 failures, no exclusions; the mandatory API signature test runs and 
passes** against the `jakarta.validation` packages the Plume distribution 
ships. Needs AssertJ 3.7.0 pinned (the published TCK jar is compiled against 
its covariant signatures) and the JAXB RI pinned as 
`jakarta.xml.bind.JAXBContextFactory` in the server JVM (Plume ships both MOXy 
and the RI;  [...]
diff --git a/runner-standalone/exclusions/rest.txt 
b/runner-standalone/exclusions/rest.txt
index eeaf197..9ee24a0 100644
--- a/runner-standalone/exclusions/rest.txt
+++ b/runner-standalone/exclusions/rest.txt
@@ -1,35 +1,20 @@
 # Jakarta RESTful Web Services 4.0 TCK (jakarta.ws.rs:jakarta-restful-ws-tck:
 # 4.0.1) on the TomEE Plume snapshot, Java 21, 2026-07-18: 2,803 tests,
-# 4 failures, 11 errors, 128 skipped (the TCK's own @Disabled tests).
-# One of the errors was a harness gap (the CXF client needs
-# cxf-rt-rs-extension-providers for spec-required JSON-B support) and is
-# fixed in the runner; the 14 tests below are TomEE/CXF product results.
-# Reviewed exclusions keep the remaining suite runnable; they are not
-# compatibility passes.
+# 2 failures, 1 error, 128 skipped (the TCK's own @Disabled tests) with no
+# exclusions applied. The runner disables openejb.jaxrs.fail-on-constrainedto
+# in the server JVM (spec-required tolerance of @ConstrainedTo(CLIENT)
+# providers) and pins the CXF client to the HttpURLConnection conduit
+# (org.apache.cxf.transport.http.forceURLConnection=true); the async conduit's
+# no-entity handling — tracked upstream as CXF-9039 — otherwise fails the
+# getLength()/hasEntity() assertions. The 3 tests below are TomEE/CXF
+# product results. Reviewed exclusions keep the remaining suite runnable;
+# they are not compatibility passes.
 #
 # Format: maven-surefire excludesFile patterns, applied through
 # -Dtck.exclusions.file (see runner-standalone/README.md).
 
-# TomEE refuses to deploy an application whose classes include a
-# @ConstrainedTo(RuntimeType.CLIENT) provider ("IllegalArgumentException:
-# class ...ClientSideWriter is not a SERVER provider" from
-# TomeeJaxRsService) where the spec requires the server runtime to ignore
-# client-constrained providers; every request then answers 404.
-**/ee/jakarta/tck/ws/rs/ee/rs/constrainedto/JAXRSClientIT.java
-
-# ContainerRequestContext.getLength() must be -1 without a request entity;
-# TomEE/CXF reports 0.
-**/ee/jakarta/tck/ws/rs/ee/rs/container/requestcontext/JAXRSClientIT.java#getLengthWhenNoEntityTest
-
-# HttpHeaders.getLength() resource response arrives empty instead of the
-# expected non-zero length value.
-**/ee/jakarta/tck/ws/rs/ee/rs/core/headers/JAXRSClientIT.java#getLengthTest
-
-# CXF client Response.hasEntity() answers true for an entity-less response.
-**/ee/jakarta/tck/ws/rs/ee/rs/core/response/JAXRSClientIT.java#hasEntityWhenNoEntityTest
-
 # REST 3.1 automatic discovery of Feature/DynamicFeature implementations
-# through META-INF/services is not implemented.
+# through META-INF/services is not implemented (TOMEE-4321, CXF-9005).
 
**/ee/jakarta/tck/ws/rs/jaxrs31/spec/extensions/JAXRSClientIT.java#featureIsRegisteredTest
 
**/ee/jakarta/tck/ws/rs/jaxrs31/spec/extensions/JAXRSClientIT.java#dynamicFeatureIsRegisteredTest
 
diff --git a/runner-standalone/rest/pom.xml b/runner-standalone/rest/pom.xml
index c3afde9..5acedbf 100644
--- a/runner-standalone/rest/pom.xml
+++ b/runner-standalone/rest/pom.xml
@@ -202,6 +202,11 @@
           </includes>
           <excludesFile>${tck.exclusions.file}</excludesFile>
           <systemPropertyVariables>
+            <!-- Force the CXF JAX-RS client onto the HttpURLConnection conduit
+                 for TCK runs, matching apache/tomee's TCK module and the
+                 webprofile runner; the async HTTP conduit mis-handles some
+                 no-entity response cases the assertions probe. -->
+            
<org.apache.cxf.transport.http.forceURLConnection>true</org.apache.cxf.transport.http.forceURLConnection>
             <!-- TomEE materializes web.xml servlet entries whose init-param
                  jakarta.ws.rs.Application names the app through its own CXF
                  adaptor servlet, like the Platform TCK runner does. -->
diff --git a/runner-standalone/rest/src/test/resources/arquillian.xml 
b/runner-standalone/rest/src/test/resources/arquillian.xml
index aaea7b6..5eb41de 100644
--- a/runner-standalone/rest/src/test/resources/arquillian.xml
+++ b/runner-standalone/rest/src/test/resources/arquillian.xml
@@ -26,8 +26,12 @@
       <property name="removeUnusedWebapps">true</property>
       <property name="simpleLog">true</property>
       <!-- The suite deploys and undeploys more than a hundred archives in
-           one server lifetime. -->
-      <property name="catalina_opts">-Xmx2048m -XX:MaxMetaspaceSize=1g 
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property>
+           one server lifetime. openejb.jaxrs.fail-on-constrainedto=false makes
+           TomEE's CxfRsHttpListener ignore a bundled @ConstrainedTo(CLIENT)
+           provider (the spec-required behavior) instead of rejecting the
+           deployment; this is a server-JVM property, so it rides catalina_opts
+           into the remote container rather than the surefire client JVM. -->
+      <property name="catalina_opts">-Xmx2048m -XX:MaxMetaspaceSize=1g 
-Dopenejb.jaxrs.fail-on-constrainedto=false 
--add-exports=java.base/jdk.internal.vm.annotation=ALL-UNNAMED</property>
     </configuration>
   </container>
 </arquillian>

Reply via email to