Conversation
Align component-runtime's cxf.version with Studio/connectors (4.1.8). CXF 4.0+ dropped javax.* support entirely, so this is not a plain property bump: every module compiled/run against CXF's JAX-RS/CDI runtime (component-server, vault-client, component-starter-server, component-tools-webapp, documentation) is migrated from javax.ws.rs / javax.xml.ws / javax.enterprise / javax.inject / javax.annotation to the jakarta.* equivalents, and the embedded server stack (Meecrowave, OpenWebBeans, Johnzon) is bumped to jakarta-compatible releases so it can boot alongside CXF 4.x. Key changes: - Root pom cxf.version 3.6.12 -> 4.1.8; meecrowave/owb/johnzon bumped to jakarta-compatible lines; jakarta re-pins added to images/*. - javax.* -> jakarta.* import migration across component-server, vault-client, component-starter-server, component-tools-webapp and documentation's REST-doc generator. - New self-contained jakarta CDI extension in component-server (service/jcache/cdi) replacing geronimo-jcache-simple's javax-only JSR-107 caching integration, which was a silent no-op under jakarta CDI. - Dual javax/jakarta @JsonbTransient annotations on component-api's Schema/Entry and component-runtime-impl's concrete Record/Schema implementations, since jakarta johnzon-jsonb 2.1.0 introspects the declared interface type rather than concrete overrides. - SmallRye Config scanning-exclude added to meecrowave.properties (component-server, component-starter-server, images/*) to avoid a double-registered ConfigProducer CDI bean under CDI 4.x. The CVE fixed in QTDI-3340 (cxf 3.6.12) remains resolved at 4.1.8; no new CVE introduced (spot-checked via CI's Trivy scan). Connectors-se/ee, cloud-components and studio are unaffected: their cxf 4.1.8 usages are already independently declared and isolated by per-plugin classloaders, or (Studio TCK-SDK prep-repo) intentionally still pinned to 3.6.12 to match component-runtime. Verified: full reactor build (mvn clean install) is BUILD SUCCESS, 2932 tests run / 0 failures / 0 errors. component-server (177 tests), component-starter-server (47 tests), component-runtime-manager (316 tests) and vault-client (19 tests) suites independently green. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🔍 Scope & Design Review (
|
✅ Compliance Check (
|
| Severity | Found | Fixed | Accepted-as-is (documented) |
|---|---|---|---|
| Blocker | 2 (Round 1 meecrowave.properties; Round 3 untracked files) | 2 | 0 |
| Critical (compliance) | 5 (2 Round 1, 2 Round 2, 1 Round 3) | 5 | 0 |
| Major | 1 (Round 1 AvroSchema/AvroRecord) | 1 | 0 |
| Critical (adversarial) | 1 (Round 2 images pom.xml) | 1 | 0 |
| High | 1 (Round 2 images meecrowave.properties) | 1 | 0 |
| Medium | 2 (Round 2) | 1 | 1 (CacheRemoveAllInterceptor dormant bug, documented) |
| Warning/Minor | 1 | 0 | 1 (catch(Throwable), documented) |
| Info | 4 | 3 | 1 (generated docs — resolved by root-cause investigation, not a code fix) |
Signed: GitHub Copilot CLI
…edge Repo-specific memory from this ticket's delivery: RAT false-positive on local ai-commons tooling, documentation module's generated-doc regeneration side effect, and a -T 1C parallel-build test hang in component-runtime-manager. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Builder reflection createPojoJsonbBuilder reflectively grabbed a private Johnzon-only MapperBuilder 'builder' field to force setDoCloseOnStreams(true). Since round0 re-pinned johnzon-core/johnzon-mapper to the jakarta line in component-server's dependencyManagement, JsonbBuilder.newBuilder() can now resolve to Yasson's builder impl instead, which has no such field, turning a harmless optimization into a fatal NoSuchFieldException / IllegalStateException. Guard the reflection behind an instanceof check against Johnzon's JohnzonBuilder and skip the optimization (with a debug log) when a different JSON-B provider is active instead of rethrowing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The beam-sample-test surefire execution (BeamActionSerializationTest + BeamComponentResourceImplTest) had no reuseForks override, defaulting to reuseForks=true, so both test classes shared one JVM fork/one ComponentManager singleton — causing an intermittent 'Container the-test-component already exists' collision on CI. Add reuseForks=false to the beam-sample-test execution, matching the sibling default-test execution which already carries the same fix for the identical class of collision. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Item #1 (Sonar Quality Gate) — acknowledged, but deferred per explicit developer decision this round (dashboard requires authenticated access not available to this agent; developer instructed: "ignore for now, proceed without addressing Sonar this round."). No action taken on this finding in round 1 — will be revisited in a follow-up round. |
Review round 1 — summary
Fixes pushed: Verified: Round summary generated by AI. Please resolve threads after verifying the fixes. |
Two module-knowledge.md files created (component-runtime-manager, component-server) documenting this round's root-caused findings: - JSON-B provider resolution assumption in DefaultServiceProvider.createPojoJsonbBuilder (Johnzon-only reflection). - reuseForks=false fixes for ComponentManager/Meecrowave container-id collisions must be applied per surefire execution, not just once per pom. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved critical dependency-alignment issues and JCache interceptor defects block approval.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 4
Open (7)
Pin Jakarta Johnzon runtime dependencies · New Pin Jakarta Johnzon dependencies in this module · New Pin Jakarta Johnzon dependencies for the image · New Pin Jakarta Johnzon dependencies for the image · New Advance parameter index when locating @CacheValue · New Use CacheRemoveAll afterInvocation setting · New Add tests for JakartaJAXRSClient action · New
What changed in this PR
This PR upgrades CXF to 4.1.8 and migrates CXF-dependent modules from javax.* to jakarta.*.
Changes:
- Aligns Jakarta-compatible dependency versions and image configurations.
- Migrates server, starter, vault, webapp, and documentation code.
- Adds CDI-based JCache support and dual JSON-B compatibility annotations.
| File | Summary |
|---|---|
vault-client/src/test/java/org/talend/sdk/components/vault/client/VaultClientTest.java |
Jakarta test migration |
vault-client/src/test/java/org/talend/sdk/components/vault/client/vault/VaultMock.java |
Jakarta test migration |
vault-client/src/main/resources/META-INF/beans.xml |
Jakarta CDI metadata |
vault-client/src/main/java/org/talend/sdk/components/vault/jcache/JCacheSetup.java |
Jakarta CDI migration |
vault-client/src/main/java/org/talend/sdk/components/vault/jcache/CacheConfigurationFactory.java |
Jakarta CDI migration |
vault-client/src/main/java/org/talend/sdk/components/vault/client/VaultHttp.java |
Jakarta qualifier migration |
vault-client/src/main/java/org/talend/sdk/components/vault/client/VaultClientSetup.java |
Jakarta client migration |
vault-client/src/main/java/org/talend/sdk/components/vault/client/VaultClient.java |
Jakarta API migration |
vault-client/src/main/java/org/talend/sdk/components/vault/client/ClockSetup.java |
Jakarta CDI migration |
vault-client/pom.xml |
Dependency alignment |
repository-knowledge.md |
Build documentation |
images/component-starter-server-image/src/main/resources/meecrowave.properties |
CDI configuration |
images/component-starter-server-image/pom.xml |
Jakarta dependency alignment |
images/component-server-image/src/main/resources/meecrowave.properties |
CDI configuration |
images/component-server-image/src/main/java/org/talend/sdk/component/server/image/Startup.java |
Jakarta CDI migration |
images/component-server-image/pom.xml |
Jakarta dependency alignment |
documentation/src/main/java/org/talend/runtime/documentation/SearchIndexation.java |
Jakarta JSON migration |
documentation/src/main/java/org/talend/runtime/documentation/Gravatars.java |
Jakarta REST migration |
documentation/src/main/java/org/talend/runtime/documentation/Github.java |
Jakarta REST/JSON migration |
documentation/src/main/java/org/talend/runtime/documentation/Generator.java |
Jakarta REST/JSON migration |
documentation/src/main/java/org/talend/runtime/documentation/component/source/MockTableSource.java |
Jakarta migration |
documentation/src/main/java/org/talend/runtime/documentation/component/source/MockTableMapper.java |
Jakarta migration |
documentation/src/main/java/org/talend/runtime/documentation/component/service/MockTableService.java |
Jakarta migration |
documentation/src/main/java/org/talend/runtime/documentation/component/service/http/TableApiClient.java |
Jakarta JSON migration |
documentation/src/main/java/org/talend/runtime/documentation/component/output/Reject.java |
Jakarta JSON migration |
documentation/src/main/java/org/talend/runtime/documentation/component/output/MockOutput.java |
Jakarta migration |
documentation/src/main/antora/modules/ROOT/pages/_partials/java/UserWriter.java |
Documentation snippet migration |
documentation/src/main/antora/modules/ROOT/pages/_partials/java/PersonReader.java |
Documentation snippet migration |
component-tools-webapp/src/main/resources/META-INF/services/jakarta.servlet.ServletContainerInitializer |
Jakarta servlet registration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/WebAppConfiguration.java |
Jakarta CDI migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/WebAppComponentProxy.java |
Jakarta REST migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/UIConfiguration.java |
Jakarta CDI migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/standalone/servlet/StaticResourceServlet.java |
Jakarta servlet/JSON migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/standalone/main/ActionExecutor.java |
Jakarta JSON migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/standalone/generator/StaticUiSpecGenerator.java |
Jakarta JSON migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/standalone/generator/StaticResourceGenerator.java |
Jakarta CDI/REST migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/ResourceProxy.java |
Jakarta servlet migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/LazyClient.java |
Jakarta client migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/JakartaJAXRSClient.java |
Jakarta REST client |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/FrontCompatibilityRouter.java |
Jakarta servlet migration |
component-tools-webapp/src/main/java/org/talend/sdk/component/tools/webapp/AdminResource.java |
Jakarta REST migration |
component-tools-webapp/pom.xml |
Jakarta dependency alignment |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/test/Client.java |
Jakarta test client |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/service/facet/test/TalendComponentKitTestingTest.java |
Jakarta test configuration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/service/facet/component/ComponentGeneratorTest.java |
Jakarta test configuration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/service/facet/component/ComponentGeneratorConfigurationTest.java |
Jakarta test configuration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/RRDEndpointTest.java |
Jakarta REST test migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/ProjectResourceTest.java |
Jakarta REST/JSON test migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/source/MockTableSource.java |
Jakarta migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/source/MockTableMapper.java |
Jakarta migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/service/MockTableService.java |
Jakarta migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/service/http/TableApiClient.java |
Jakarta JSON migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/output/Reject.java |
Jakarta JSON migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/component/output/MockOutput.java |
Jakarta migration |
component-starter-server/src/test/java/org/talend/sdk/component/starter/server/front/apidemo/ApiDemoEndpointsTest.java |
Jakarta REST/JSON test migration |
component-starter-server/src/main/resources/META-INF/services/jakarta.servlet.ServletContainerInitializer |
Jakarta servlet registration |
component-starter-server/src/main/resources/meecrowave.properties |
CDI configuration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/template/TemplateRenderer.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/statistic/StatisticService.java |
Jakarta migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/rrd/RRDStorage.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/rrd/RRDConfig.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/ReadmeGenerator.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/ProjectGenerator.java |
Jakarta migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/OpenAPIGenerator.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/swagger/SwaggerAPI.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/swagger/Parameter.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/swagger/Operation.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/ServerVariable.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/Server.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/Reference.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/Path.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/Operation.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/OpenAPI.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/MediaType.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/openapi/Components.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/Tag.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/ParameterBase.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/License.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/Info.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/ExternalDocs.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/openapi/model/common/Contact.java |
Jakarta JSON-B migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/json/JsonbProducer.java |
Jakarta JSON-B producer |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/info/ServerInfo.java |
Jakarta REST migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/wadl/WADLFacet.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/util/NameConventions.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/travis/TravisFacet.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/testing/TalendComponentKitTesting.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/component/ComponentGenerator.java |
Jakarta migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/codenvy/CodenvyFacet.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/facet/beam/BeamFacet.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/domain/ProjectRequest.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/service/build/MavenBuildGenerator.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/model/ProjectModel.java |
Jakarta JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/StarterApplication.java |
Jakarta REST migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/RRDEndpoint.java |
Jakarta REST migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/ProjectResource.java |
Jakarta REST migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/js/IndexRedirector.java |
Jakarta servlet migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/EnvironmentResource.java |
Jakarta REST migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/front/ApiDemoEndpoints.java |
Jakarta REST/JSON migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/configuration/StarterConfiguration.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/configuration/ServletConfigurer.java |
Jakarta servlet migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/configuration/ScmConfigurationLoader.java |
Jakarta CDI migration |
component-starter-server/src/main/java/org/talend/sdk/component/starter/server/configuration/ComponentConfigurationLoader.java |
Jakarta CDI migration |
component-starter-server/pom.xml |
Jakarta dependency alignment |
component-server-parent/extensions/component-server-extension-api/src/main/java/org/talend/sdk/component/server/extension/api/action/Action.java |
Jakarta REST API migration |
component-server-parent/extensions/component-server-extension-api/pom.xml |
Jakarta API dependencies |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/tomcat/TomcatSetupTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/websocket/WebsocketClient.java |
Jakarta WebSocket/JSON migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/vault/VaultMock.java |
Jakarta REST migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/vault/TenantHeaderFilter.java |
Jakarta REST migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/model/InfiniteStoppableMapper.java |
Jakarta JSON migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/model/InfiniteMapper.java |
Jakarta JSON migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/model/FileOutput.java |
Jakarta annotation migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/jdbc/JdbcOutput.java |
Jakarta JSON migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/jdbc/JdbcInput.java |
Jakarta annotation migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/InitTestInfra.java |
Jakarta JSON-B migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/file/FileWriter.java |
Jakarta annotation migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/ComponentClient.java |
Jakarta REST migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/test/ClientProducer.java |
Jakarta REST migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/VirtualDependenciesServiceTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/VirtualDependenciesServiceTemplatingTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/UiSchemaTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/PropertiesServiceTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/LocaleMapperTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/jcache/FrontCacheResolverTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/IconResolverTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/ComponentManagerServiceTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/service/ActionDisplayNameTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/SchemaTest.java |
Jakarta JSON-B test |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/MigrationTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/EnvironmentResourceImplTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/EntryTest.java |
Jakarta JSON-B test |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/DocumentationResourceImplTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/ConfigurationTypeResourceImplTest.java |
Jakarta REST/JSON test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/ComponentResourceImplTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/BulkReadResourceImplTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/beam/BeamComponentResourceImplTest.java |
Jakarta REST test migration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/beam/BeamActionSerializationTest.java |
Jakarta test configuration |
component-server-parent/component-server/src/test/java/org/talend/sdk/component/server/front/ActionResourceImplTest.java |
Jakarta REST/JSON test migration |
component-server-parent/component-server/src/main/resources/META-INF/services/javax.json.spi.JsonProvider |
JSON provider compatibility |
component-server-parent/component-server/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension |
CDI service registration |
component-server-parent/component-server/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension |
Jakarta CDI service registration |
component-server-parent/component-server/src/main/resources/META-INF/beans.xml |
Jakarta CDI metadata |
component-server-parent/component-server/src/main/resources/meecrowave.properties |
CDI configuration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/VirtualDependenciesService.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/SimpleQueryLanguageCompiler.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/security/SecurityExtension.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/security/NoopHandler.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/qualifier/ComponentServer.java |
Jakarta qualifier migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/PropertyValidationService.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/PropertiesService.java |
Jakarta CDI/JSON migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/LocaleMapper.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/JsonbFactory.java |
Jakarta JSON-B producer |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/FrontCacheResolver.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/FrontCacheKeyGenerator.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/MakeJCacheCDIInterceptorFriendly.java |
Jakarta JCache CDI extension |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/CacheRemoveInterceptor.java |
Jakarta JCache interceptor |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/CachePutInterceptor.java |
Jakarta JCache interceptor |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/CacheMethodDetailsImpl.java |
Jakarta JCache support |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/CacheKeyInvocationContextImpl.java |
Jakarta JCache support |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/jcache/cdi/CacheInvocationContextImpl.java |
Jakarta JCache support |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/IconResolver.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/httpurlconnection/NetAuthenticatorWorkaround.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/httpurlconnection/NetAuthenticatorController.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/httpurlconnection/IgnoreNetAuthenticatorInterceptor.java |
Jakarta interceptor migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/httpurlconnection/IgnoreNetAuthenticator.java |
Jakarta interceptor binding |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/GlobService.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/ExtensionComponentMetadataManager.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/ComponentManagerService.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/service/ActionsService.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/mdc/MdcRequestBinder.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/lang/MapCache.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/TalendComponentApplication.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/security/web/EnvironmentFilter.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/security/web/DocumentationToggle.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/security/SecurityUtils.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/security/ConnectionSecurityProvider.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/security/CommandSecurityProvider.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/memory/SimpleServletConfig.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/memory/MemoryInputStream.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/memory/InMemoryResponse.java |
Servlet API migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/memory/InMemoryRequest.java |
Servlet API migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/memory/AsyncContextImpl.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/filter/message/MessageResponseFilter.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/filter/encoding/ForceEncoding.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/error/DefaultExceptionHandler.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/error/CompletionExceptionExceptionMapper.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/EnvironmentResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/DocumentationResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/cxf/CxfExtractor.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/cxf/CxfCustomApplicationExceptionMapperEnforcer.java |
Jakarta REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/ConfigurationTypeResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/ComponentResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/BulkReadResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/front/ActionResourceImpl.java |
Jakarta CDI/REST migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/dao/ConfigurationDao.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/dao/ComponentFamilyDao.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/dao/ComponentDao.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/dao/ComponentActionDao.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/configuration/WebSocketBroadcastSetup.java |
Jakarta WebSocket migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/configuration/ScmConfigurationLoader.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/configuration/MdcInitializer.java |
Jakarta servlet migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/configuration/ComponentServerConfiguration.java |
Jakarta CDI migration |
component-server-parent/component-server/src/main/java/org/talend/sdk/component/server/configuration/ComponentConfigurationLoader.java |
Jakarta CDI migration |
component-server-parent/component-server/module-knowledge.md |
Test documentation |
component-server-parent/component-server-model/src/main/java/org/talend/sdk/component/server/front/model/BulkResponses.java |
Jakarta JSON migration |
component-server-parent/component-server-model/pom.xml |
Jakarta JSON dependency |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/EnvironmentResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/DocumentationResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/ConfigurationTypeResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/ComponentResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/CacheResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/BulkReadResource.java |
Jakarta REST API |
component-server-parent/component-server-api/src/main/java/org/talend/sdk/component/server/api/ActionResource.java |
Jakarta REST API |
component-server-parent/component-server-api/pom.xml |
Jakarta REST dependency |
component-runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/service/DefaultServiceProvider.java |
JSON-B provider handling |
component-runtime-manager/src/main/java/org/talend/sdk/component/runtime/manager/ComponentManager.java |
JSON-B provider resolution |
component-runtime-manager/module-knowledge.md |
JSON-B provider documentation |
component-runtime-impl/src/main/java/org/talend/sdk/component/runtime/record/Schemas.java |
Dual JSON-B annotations |
component-runtime-impl/src/main/java/org/talend/sdk/component/runtime/record/SchemaImpl.java |
Dual JSON-B annotations |
component-runtime-impl/src/main/java/org/talend/sdk/component/runtime/record/RecordImpl.java |
Dual JSON-B annotations |
component-runtime-impl/pom.xml |
Jakarta JSON-B dependency |
component-runtime-beam/src/main/java/org/talend/sdk/component/runtime/beam/spi/record/AvroSchema.java |
Dual JSON-B annotations |
component-runtime-beam/src/main/java/org/talend/sdk/component/runtime/beam/spi/record/AvroRecord.java |
Dual JSON-B annotations |
component-runtime-beam/pom.xml |
Jakarta JSON-B dependency |
component-api/src/main/java/org/talend/sdk/component/api/service/schema/Schema.java |
Dual JSON-B annotation |
component-api/src/main/java/org/talend/sdk/component/api/record/Schema.java |
Dual JSON-B annotations |
component-api/pom.xml |
Jakarta JSON-B dependency |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
component-tools-webapp, documentation, images/component-server-image
and images/component-starter-server-image each re-pin the jakarta
container libraries (Meecrowave/Tomcat/OpenWebBeans) for their own
dependencyManagement, but left the runtime Johnzon graph on the shared
root javax ${johnzon.version}. Add the jakarta johnzon-core,
johnzon-mapper and johnzon-jsonb pins to each module's
dependencyManagement, mirroring component-server/pom.xml, so the
jakarta.json.spi.JsonProvider lookup used by jakarta.json.bind.Jsonb
resolves consistently across all four modules.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ueParameter getValueParameter never advanced idx past the first outer-loop iteration, so for a JSR-107 method whose @CacheValue annotation sits on any parameter other than the first, MethodMeta.valueIndex incorrectly stayed at 0. Increment idx once per outer-loop iteration so the returned index matches the actual annotated parameter's position. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…fterInvocation flag CacheRemoveAllInterceptor read the co-located @cACHEpUT's afterInvocation flag instead of @CacheRemoveAll's own, so a method combining both annotations would evict at the wrong time relative to invocation, and a standalone @CacheRemoveAll with afterInvocation=true would evict before invocation instead of after — leaving the cache uncleared when the method fails. Read methodMeta.getCacheRemoveAll().afterInvocation() instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add JakartaJAXRSClientTest, covering #action's request path/query params, payload conversion, response mapping, and #close()'s delegate-ownership behavior, using a local embedded com.sun.net.httpserver.HttpServer per java-testing-conventions.md (no live external services in unit tests). Writing this test surfaced that #action itself was broken: CXF's JAX-RS client does not auto-discover a JSON-B MessageBodyReader/Writer for a plain Map<String, Object> payload, so every call failed at runtime with 'No message body writer has been found for class java.util.HashMap'. Register johnzon-jsonb's bundled org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider on the client in the shared 3-arg constructor (used by both JakartaJAXRSClient's own newClient() factory and LazyClient's injected client), and make the johnzon-jsonb dependency explicit rather than relying on it arriving transitively via component-server, since this class now imports one of its classes directly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🔍 Sonar Quality Gate (item #8) — round 2 outcomePer the Dev amendment un-deferring this item, attempted Outcome: cannot execute — the Sonar Maven plugin requires an authenticated round-trip to SonarCloud (
This is the same underlying 401/auth constraint noted in the Round 1 deferral — no local-only analysis mode exists for this Sonar plugin version without a reachable, authenticated server. Local equivalent performed instead: manually audited every file touched by this PR against If dashboard/token access becomes available, re-running Signed: Claude Sonnet 4.6 |
Review round 2 — summary
Fixes pushed: Validation: component-server (177/0/0/1), component-tools-webapp (2/0/0/0, incl. new Round summary generated by AI. Please resolve threads after verifying the fixes. Signed: Claude Sonnet 4.6 |
… JAX-RS JSON-B provider gotcha Module-specific memory finding from Round 2 PR-review-fix pass: CXF's JAX-RS client does not auto-discover a JSON-B provider for arbitrary payloads and must have org.apache.johnzon.jaxrs.jsonb.jaxrs.JsonbJaxrsProvider registered explicitly. Documented per manage-memory skill (ungated, module-specific scope) so future work in this module doesn't rediscover the same runtime bug pattern. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…s for item #8 Dev supplied real SonarQube credentials to un-block item #8 (previously a manual-audit fallback due to 401/missing SONAR_TOKEN). Queried the Sonar Web API directly against PR #1283's already-current CI analysis (authoritative, newer than the local sandbox's own network-restricted mvn sonar:sonar attempt) and reviewed all 53 new-code issues, all confined to the brand-new jcache/cdi package (self-contained CDI extension replacing geronimo-jcache-simple, ported/adapted from upstream, see file-level NOTE comments). Fixed the genuine, surgical issues: - S2293 (10x): diamond operator on generic constructor calls. - S6202 (8x): replace X.class.isInstance(o)/X.class.cast(o) with instanceof/ cast expressions in the 4 interceptors' completion-stage/exception handling. - S1066 (6x): merge nested "if (afterInvocation) { if (isIncluded) ... }" into a single condition (3 interceptors x 2 sites). - S3824 + partial S3776: CDIJCacheHelper#findMeta's manual double-checked locking replaced with ConcurrentHashMap#computeIfAbsent (also simpler and still correct/thread-safe). - S3776 (5x, cognitive complexity 19-30 -> under 15): extracted the completion-stage failure handling and catch-block cache-eviction/caching logic into small private helper methods in all 4 interceptors; extracted CDIJCacheHelper#keyParameterIndexes's two nested-loop scans into their own methods. - S1117 (3x): renamed local variables/parameters that were shadowing a field, in CDIJCacheHelper and CacheInvocationContextImpl. - S2093 (1x): converted a JakartaJAXRSClientTest test method's manual try/finally Client cleanup to try-with-resources (pure resource-management equivalence; no assertion touched — reviewed against the test-modification guardrail, not gated as it doesn't loosen/remove coverage). Documented (not changed) the issues that are genuine design decisions or Sonar false positives rather than defects, inline where it adds context and in the round summary: - S1181/S112 (Throwable catch/declare, 4x each): deliberate, already commented in each interceptor — a generic JSR-107 interceptor must observe and rethrow whatever the intercepted method throws, of any type. - S3077 (volatile non-primitive field): textbook double-checked-locking lazy singleton, `volatile` is sufficient here; now documented inline. - S107 (23-parameter constructor): already carries an in-code rationale (ported field-per-annotation carrier, CHECKSTYLE:OFF) predating this round. - S125 (line 467): Sonar false-positive heuristic match on a plain rationale comment, not actual commented-out code. - S1135 (3x, TODO comments): verbatim open design questions inherited from upstream geronimo-jcache-simple; resolving them is feature work outside this migration's scope. Verified: component-server 177/0/0/1 (same pass rate as prior rounds), component-tools-webapp 2/0/0/0, spotless:check/checkstyle:check clean on both modules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🔍 Sonar Quality Gate (item #8) — corrected outcome (supersedes the earlier "cannot execute" note)Dev supplied real Sonar credentials after the round 2 summary above, and asked that item #8 be Analysis used: the Sonar Quality Gate check above ( All 53 issues are confined to the brand-new
Coverage (48.70% vs 80%): not addressed - closing this gap needs net-new unit tests for the Note on the Verified: Generated by AI. |
…che/cdi test coverage Round 3 follow-up on the CXF 4.x/jakarta migration, addressing the 19 Sonar "new code" issues reported on PR #1283 (all confined to service/jcache/cdi) and the new-code coverage gap flagged by the quality gate. Sonar fixes (19 issues): - S6201 (x4, genuine fix): replaced instanceof+cast with Java pattern matching in the onFailure/onAsyncFailure helpers of CacheResultInterceptor, CachePutInterceptor, CacheRemoveInterceptor and CacheRemoveAllInterceptor. - S112/S1181 (x4 each), S3077, S6813, S107, S125, S1135 (x3): documented, accepted deviations from a prior round - now actually suppressed via @SuppressWarnings("java:Sxxxx") (the convention already used elsewhere in this module, e.g. AsyncContextImpl/BulkReadResourceImpl) with the existing rationale comments kept in place, so Sonar's issue count reflects the accepted state instead of re-flagging them every scan. Test coverage (service/jcache/cdi, previously ~48.70% new-code coverage): - Added CDIJCacheHelperTest, CacheResultInterceptorTest, CachePutInterceptorTest, CacheRemoveInterceptorTest and CacheRemoveAllInterceptorTest, exercising MethodMeta resolution and memoization, annotation parsing (@CacheResult/@CachePut/@CacheRemove/ @CacheRemoveAll), key/value parameter indexing (including a regression lock for the round-2 getValueParameter off-by-one fix), CDI-bean-backed CacheKeyGenerator/CacheResolverFactory resolution and release(), and each interceptor's before/after-invocation timing, exception inclusion/exclusion filtering and sync/async failure handling, including a regression lock for the round-2 fix making CacheRemoveAllInterceptor read its own @CacheRemoveAll.afterInvocation() flag. - Tests run against the real in-memory JSR-107 provider bundled by geronimo-jcache-simple (already a compile dependency, no live external system involved) instead of mocking JCache itself, for closer-to- production coverage of the surrounding CacheInvocationContextImpl, CacheKeyInvocationContextImpl and CacheMethodDetailsImpl classes. - Added mockito-junit-jupiter as an explicit test dependency in component-server/pom.xml, excluding its transitive junit-jupiter-api to avoid downgrading the reactor-managed version. - Local JaCoCo measurement after these tests: service/jcache/cdi package now at approximately 93.5% line, 91.1% instruction and 80.4% branch coverage (aggregate approximately 89% by Sonar's line+condition coverage formula), comfortably above the 80% quality gate threshold. The authoritative Sonar number will be confirmed on the next CI analysis of this PR. Full component-server test suite: 217 + 3 tests, 0 failures (1 unrelated pre-existing skip). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Round 3 — remaining Sonar issues fixed +
|
| Rule | Count | Resolution |
|---|---|---|
| S6201 (instanceof+cast → pattern match) | 4 | Genuinely fixed — converted to Java pattern-matching instanceof in each interceptor's onFailure/onAsyncFailure helper. |
S112 (generic throws Throwable) |
4 | Accepted deviation (documented in round 2) — now actually suppressed via @SuppressWarnings("java:S112"). |
S1181 (catch Throwable) |
4 | Same — suppressed via @SuppressWarnings("java:S1181"). |
| S3077 (volatile field) | 1 | Accepted deviation — suppressed. |
| S6813 (field injection) | 1 | Accepted deviation (constructor injection not possible here — UnproxyableResolutionException) — suppressed. |
| S107 (23-param constructor) | 1 | Accepted deviation (mirrors JSR-107 CacheKeyInvocationContext constructor shape) — suppressed. |
| S125 (commented-code false positive) | 1 | Suppressed. |
| S1135 (TODO comments) | 3 | Suppressed. |
The 14 "accepted deviation" issues had been documented with rationale comments in round 2 but never actually suppressed, so Sonar kept re-flagging them every scan — this round applies @SuppressWarnings("java:Sxxxx") at the exact flagged locations (the convention already used elsewhere in this module, e.g. AsyncContextImpl, BulkReadResourceImpl), so the issue count should now reflect the accepted state.
New-code coverage (previously ~48.70%)
Added 5 new unit test classes for service/jcache/cdi (previously untested): CDIJCacheHelperTest, CacheResultInterceptorTest, CachePutInterceptorTest, CacheRemoveInterceptorTest, CacheRemoveAllInterceptorTest — ~40 test methods covering annotation resolution, key/value parameter indexing (incl. a regression lock for round 2's getValueParameter off-by-one fix), CDI-bean-backed CacheKeyGenerator/CacheResolverFactory resolution, and each interceptor's before/after-invocation timing, exception filtering, and sync/async failure handling (incl. a regression lock for round 2's CacheRemoveAllInterceptor afterInvocation-flag fix).
Tests run against the real in-memory JSR-107 provider already bundled by geronimo-jcache-simple (a compile dependency, no live external system) rather than mocking JCache itself.
Local JaCoCo measurement for service/jcache/cdi after these tests:
- Line coverage: ~93.5%
- Instruction coverage: ~91.1%
- Branch coverage: ~80.4%
- Aggregate (Sonar's line+condition formula): ~89%
All comfortably above the 80% quality-gate threshold. The authoritative Sonar number will be confirmed on the next CI analysis of this PR.
Full component-server suite: 217 + 3 tests, 0 failures (1 pre-existing, unrelated skip). spotless:apply, checkstyle:check and rat:check all pass clean.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Unresolved correctness and test-coverage issues remain in cache handling, provider compatibility, and connector-facing namespace boundaries.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 5
Open (5)
Resolved since last review (7)
Pin Jakarta Johnzon dependencies for the image Pin Jakarta Johnzon dependencies for the image Pin Jakarta Johnzon dependencies in this module Pin Jakarta Johnzon runtime dependencies Use CacheRemoveAll afterInvocation setting Advance parameter index when locating @CacheValue Add tests for JakartaJAXRSClient action
- S1130 CDIJCacheHelperTest#mockBean: removed unneeded 'throws Exception' (nothing checked-throwing in the body). - S6068 CDIJCacheHelperTest#mockBean: dropped useless eq(...) wrapping on an all-eq getReference() verification, passing arguments directly (also removed the now-unused ArgumentMatchers.eq static import). - S1751 CacheRemoveAllInterceptorTest#isEmpty: replaced the for-each with an unconditional first-iteration return by a plain iterator().hasNext() check — same semantics, no unconditional-return-in-loop code smell. - S112 CacheResultInterceptor#lookupCachedResult: accepted deviation (rethrows an arbitrary cached Throwable from a prior #cache invocation, same generic-JSR-107-interceptor rationale as the other suppressions in this package) — suppressed with @SuppressWarnings("java:S112") and an inline rationale comment, consistent with the package convention. Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Round 4 — final 4 Sonar new-code issues resolvedCommit: Queried the Sonar Web API directly (
Verification: targeted tests ( Round 4 handled by AI. Human reviewer resolves threads after verifying. Signed: Claude Sonnet 4.5 |
…ntation samples Round 2's jakarta migration changed 8 connector sample/example files under documentation/ from javax.* to jakarta.* imports (annotation + json packages). These samples are compiled and executed through the still-javax-based component-runtime (component-runtime-impl LifecycleImpl only recognizes javax.annotation.PostConstruct/PreDestroy; RecordConverters decodes javax.json.* types), so the jakarta imports silently broke: - @PostConstruct/@PreDestroy lifecycle hooks (open()/close()) — never invoked due to annotation type mismatch - JSON values (JsonObject/JsonArray/JsonValue) returned/consumed at connector boundaries — incompatible with the javax-based JSON-B decoding path Reverts imports (annotation + json packages only) in: PersonReader, UserWriter, MockOutput, TableApiClient, MockTableSource, MockTableMapper, Reject, MockTableService. The first 5 were flagged by 5 unresolved GitHub review-thread comments on PR #1283; MockTableMapper/Reject/MockTableService share the exact same defect and were found by inspection while addressing the flagged comments. Unrelated to the broader javax->jakarta migration of component-api tracked separately in QTDI-3497. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Review round 5 — jakarta/javax revert in connector samples5 unresolved review-thread comments from These samples are compiled and executed through the still-
Also fixed 3 additional files with the exact same defect (same root cause, not flagged by the bot Fixes pushed:
This is unrelated to the broader javax→jakarta migration of Round summary generated by AI. Please resolve threads after verifying the fixes. Signed: Claude Opus 4.5 |
…mples vs doc-generator jakarta split Round 5's fix reverted 8 connector sample files' imports from jakarta.* back to javax.* because component-runtime is still javax-based. Records the distinguishing rule (sample code vs. this module's own REST-doc generator tooling, which correctly uses jakarta) for future jakarta migration work in this module. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
|




0 New Issues
1 Fixed Issue
0 Accepted Issues
Requirements
Why this PR is needed?
QTDI-3358 — align component-runtime's
cxf.versionwith Studio and connectors (
4.1.8), following the CVE fix landed inQTDI-3340 (cxf
3.6.12).What does this PR adds (design/code thoughts)?
CXF 4.0+ dropped
javax.*support entirely, so this is not a plain property bump — everymodule compiled/run against CXF's JAX-RS/CDI runtime needs a coordinated
javax.*→jakarta.*migration to compile and boot on
4.1.8. Full migration was chosen and Dev-approved afteranalysis surfaced this scope (see the plan posted on the Jira ticket).
pom.xml:cxf.version3.6.12→4.1.8;meecrowave/owb/johnzonbumped tojakarta-compatible releases; matching jakarta re-pins added to
images/*/pom.xml.javax.*→jakarta.*import migration acrosscomponent-server,vault-client,component-starter-server,component-tools-webapp, anddocumentation's REST-doc generator.component-server(
service/jcache/cdi) replacinggeronimo-jcache-simple's javax-only JSR-107 cachingintegration, which was a silent no-op under jakarta CDI.
@JsonbTransientannotations oncomponent-api'sSchema/Entryandcomponent-runtime-impl's concreteRecord/Schemaimplementations — jakarta johnzon-jsonb2.1.0 introspects the declared interface type rather than concrete overrides.
smallrye-configscanning-exclude added tomeecrowave.properties(component-server,component-starter-server,images/*) to avoid a double-registeredConfigProducerCDI beanunder CDI 4.x.
Out of scope (no code change, classloader-isolated from this repo):
connectors-se/ee,cloud-components,studio— their owncxf.version=4.1.8usages are independently declaredinside per-plugin classloaders (or, for Studio's TCK-SDK prep-repo, intentionally still pinned to
3.6.12to match component-runtime).Verification: full reactor build (
mvn clean install) isBUILD SUCCESS, 2932 tests / 0failures / 0 errors. Modules directly touched by this migration independently verified green:
component-server(177 tests),component-starter-server(47 tests),component-runtime-manager(316 tests),
vault-client(19 tests). The CVE fixed in QTDI-3340 remains resolved at4.1.8; nonew CVE introduced (CI's Trivy scan).
AI generated code
https://internal.qlik.dev/general/ways-of-working/code-reviews/#guidelines-for-ai-generated-code
AI contribution metrics
100%(single commit, AI-taggedCo-authored-bytrailer, nosubsequent human edits on this branch)
100%(this is the only PR for this ticket so far)~100%— the Dev-approved plan differs from theAI draft only editorially (option selection + heading wording); no acceptance-criteria item,
file, or module was added or dropped between draft and approved versions (see
step-3-plan-revision.mddiff summary).