Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
b6afa8c
fix(QTDI-3358): Bump CXF to 4.1.8 and migrate to jakarta.*
undx Sep 22, 2026
6dbe985
chore(QTDI-3358): Record build-validation gotchas in repository-knowl…
undx Sep 22, 2026
5560d23
fix(QTDI-3358): address review round 1 — guard Johnzon-specific Jsonb…
undx Sep 22, 2026
a6224fd
fix(QTDI-3358): address review round 1 — isolate beam-sample-test forks
undx Sep 22, 2026
475b436
chore(QTDI-3358): record round 1 module-specific build/design gotchas
undx Sep 22, 2026
5d0e713
fix(QTDI-3358): address review round 2 — pin jakarta johnzon in 4 poms
undx Sep 22, 2026
8594563
fix(QTDI-3358): address review round 2 — fix idx off-by-one in getVal…
undx Sep 22, 2026
ba099ea
fix(QTDI-3358): address review round 2 — read @CacheRemoveAll's own a…
undx Sep 22, 2026
a403f79
fix(QTDI-3358): address review round 2 — add JakartaJAXRSClientTest
undx Sep 22, 2026
0137b55
docs(QTDI-3358): record component-tools-webapp module knowledge — CXF…
undx Sep 23, 2026
a539722
fix(QTDI-3358): address review round 2 amendment — real Sonar analysi…
undx Sep 23, 2026
cc3c171
fix(QTDI-3358): resolve remaining PR #1283 Sonar issues and raise jca…
undx Sep 23, 2026
32fc335
fix(QTDI-3358): resolve final 4 Sonar new-code issues on PR #1283
undx Sep 23, 2026
27a2220
fix(QTDI-3358): revert incorrectly migrated jakarta imports in docume…
undx Sep 23, 2026
26f95a8
docs(QTDI-3358): record documentation module knowledge — connector sa…
undx Sep 23, 2026
5d156b6
fix(QTDI-3358): unify tomcat/meecrowave/owb to a single jakarta versi…
undx Sep 28, 2026
ebab019
feat(QTDI-3497): jakarta-only migration spike based on QTDI-3358
undx Sep 29, 2026
ee0db17
fix(QTDI-3497): Address review comments and Sonar quality gate
undx Oct 8, 2026
b2fcc18
fix(QTDI-3497): Address review round 2 (beam jakarta-json-api, Sonar …
undx Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,4 @@ documentation/rebuildpdf.bat
.claude/CLAUDE.md
.github/copilot-instructions.md
.claude/settings.json
.ai-commons/skills/manage-zephyr-test-cases/scripts/.env
4 changes: 2 additions & 2 deletions build/ExtractAsPropTypes.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


import java.lang.reflect.ParameterizedType
import javax.json.bind.annotation.JsonbTransient
import jakarta.json.bind.annotation.JsonbTransient

import static java.util.Locale.ROOT
import static java.util.Optional.ofNullable
Expand Down Expand Up @@ -99,7 +99,7 @@ GenerationAggregator createPropType(parent, clazz, aggregate) {
writer.write('const definition = {\n')
clazz.declaredFields.findAll { !it.isAnnotationPresent(JsonbTransient.class) }.sort { it.name }.each {
def type = it.genericType
def name = ofNullable(it.getAnnotation(javax.json.bind.annotation.JsonbProperty.class))
def name = ofNullable(it.getAnnotation(jakarta.json.bind.annotation.JsonbProperty.class))
.map { t -> t.value() }.orElse(it.name)
if (ParameterizedType.class.isInstance(it.genericType)) {
if (Collection.class.isAssignableFrom(type.rawType)) {
Expand Down
21 changes: 12 additions & 9 deletions component-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,27 @@
</properties>

<dependencies>
<!-- QTDI-3497 (experimental, jakarta-only spike): replaces the javax geronimo specs with
their jakarta equivalents - this module's public surface (lifecycle annotations,
Record/Schema JSON-P/JSON-B types) is now jakarta-only, no javax fallback. This is a
breaking change for every connector already compiled against the javax line - see the
ticket for the downstream impact analysis. -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-annotation_1.3_spec</artifactId>
<version>${geronimo-annotation.version}</version>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-json_1.1_spec</artifactId>
<version>${geronimo-json.version}</version>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jsonb_1.0_spec</artifactId>
<version>${geronimo-jsonb.version}</version>
<groupId>jakarta.json.bind</groupId>
<artifactId>jakarta.json.bind-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.johnzon</groupId>
<artifactId>johnzon-jsonb</artifactId>
<version>${johnzon.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
*/
package org.talend.sdk.component.api.exception;

import javax.json.bind.annotation.JsonbCreator;
import javax.json.bind.annotation.JsonbPropertyOrder;
import jakarta.json.bind.annotation.JsonbCreator;
import jakarta.json.bind.annotation.JsonbPropertyOrder;

import lombok.Data;
import lombok.EqualsAndHashCode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

import javax.json.Json;
import javax.json.JsonValue;
import javax.json.bind.annotation.JsonbTransient;
import javax.json.stream.JsonParser;
import jakarta.json.Json;
import jakarta.json.JsonValue;
import jakarta.json.bind.annotation.JsonbTransient;
import jakarta.json.stream.JsonParser;

import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -69,6 +69,7 @@ public interface Schema {
/**
* @return All entries, including data and metadata, of this schema.
*/
@JsonbTransient
Stream<Entry> getAllEntries();

@JsonbTransient
Expand Down Expand Up @@ -211,6 +212,7 @@ interface Entry {
/**
* @return the raw name of this entry if exists, else return name.
*/
@JsonbTransient
String getOriginalFieldName();

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.util.Optional;
import java.util.stream.Stream;

import javax.json.bind.annotation.JsonbTransient;
import jakarta.json.bind.annotation.JsonbTransient;

import org.talend.sdk.component.api.meta.Partial;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
import java.util.Optional;
import java.util.stream.Stream;

import javax.json.Json;
import javax.json.JsonString;
import javax.json.JsonValue;
import javax.json.JsonValue.ValueType;
import jakarta.json.Json;
import jakarta.json.JsonString;
import jakarta.json.JsonValue;
import jakarta.json.JsonValue.ValueType;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
Expand Down
24 changes: 12 additions & 12 deletions component-form/component-form-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<!-- QTDI-3497 (experimental, jakarta-only spike): replaces the javax geronimo specs with
their jakarta equivalents. -->
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-json_1.1_spec</artifactId>
<version>${geronimo-json.version}</version>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jsonb_1.0_spec</artifactId>
<version>${geronimo-jsonb.version}</version>
<groupId>jakarta.json.bind</groupId>
<artifactId>jakarta.json.bind-api</artifactId>
</dependency>
<dependency>
<groupId>org.talend.sdk.component</groupId>
Expand All @@ -57,12 +57,11 @@
<version>${project.version}</version>
</dependency>

<!-- to remove after having a full json schema validator -->
<dependency>
<groupId>org.apache.johnzon</groupId>
<artifactId>johnzon-jsonschema</artifactId>
<version>${johnzon.version}</version>
</dependency>
<!-- QTDI-3497 (experimental, jakarta-only spike): johnzon-jsonschema has no jakarta release
and its public API exposes javax.json types directly, so its validation engine was
vendored/ported (jakarta-converted) into
org.talend.sdk.component.form.internal.validation.jsonschema - see that package for the
Apache License 2.0 attribution. This dependency is no longer needed. -->
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
Expand All @@ -79,6 +78,7 @@
<dependency>
<groupId>org.apache.johnzon</groupId>
<artifactId>johnzon-jsonb</artifactId>
<version>${johnzon.version}</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@
import java.util.function.Predicate;
import java.util.function.Supplier;

import javax.json.bind.Jsonb;
import javax.json.bind.JsonbBuilder;
import javax.json.bind.JsonbConfig;
import jakarta.json.bind.Jsonb;
import jakarta.json.bind.JsonbBuilder;
import jakarta.json.bind.JsonbConfig;

import org.talend.sdk.component.form.internal.converter.CustomPropertyConverter;
import org.talend.sdk.component.form.internal.converter.PropertyContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

import javax.json.bind.Jsonb;
import jakarta.json.bind.Jsonb;

import org.talend.sdk.component.form.internal.converter.PropertyContext;
import org.talend.sdk.component.form.internal.converter.PropertyConverter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

import javax.json.bind.Jsonb;
import jakarta.json.bind.Jsonb;

import org.talend.sdk.component.form.internal.converter.PropertyContext;
import org.talend.sdk.component.form.internal.converter.PropertyConverter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

import javax.json.bind.Jsonb;
import jakarta.json.bind.Jsonb;

import org.talend.sdk.component.form.internal.converter.PropertyContext;
import org.talend.sdk.component.form.internal.converter.PropertyConverter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,16 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;

import org.apache.johnzon.jsonschema.regex.JavaRegex;
import org.apache.johnzon.jsonschema.spi.builtin.PatternValidation;
import org.talend.sdk.component.form.internal.validation.jsonschema.regex.JavaRegex;
import org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.PatternValidation;
import org.talend.sdk.component.form.internal.validation.spi.ext.EnumValidationWithDefaultValue;
import org.talend.sdk.component.form.internal.validation.spi.ext.MaximumValidation;
import org.talend.sdk.component.form.internal.validation.spi.ext.MinimumValidation;
import org.talend.sdk.component.form.internal.validation.spi.ext.RequiredValidation;
import org.talend.sdk.component.form.internal.validation.spi.ext.TypeValidation;

public class JsonSchemaValidatorFactoryExt extends org.apache.johnzon.jsonschema.JsonSchemaValidatorFactory {
public class JsonSchemaValidatorFactoryExt
extends org.talend.sdk.component.form.internal.validation.jsonschema.JsonSchemaValidatorFactory {

private final AtomicReference<Function<String, Predicate<CharSequence>>> reFactory =
new AtomicReference<>(this::newRegexFactory);
Expand All @@ -39,14 +40,15 @@ public JsonSchemaValidatorFactoryExt() {
}

@Override
public List<org.apache.johnzon.jsonschema.spi.ValidationExtension> createDefaultValidations() {
public List<org.talend.sdk.component.form.internal.validation.jsonschema.spi.ValidationExtension>
createDefaultValidations() {
List validations = super.createDefaultValidations()
.stream()
.filter(v -> !(v instanceof org.apache.johnzon.jsonschema.spi.builtin.TypeValidation))
.filter(v -> !(v instanceof org.apache.johnzon.jsonschema.spi.builtin.EnumValidation))
.filter(v -> !(v instanceof org.apache.johnzon.jsonschema.spi.builtin.MinimumValidation))
.filter(v -> !(v instanceof org.apache.johnzon.jsonschema.spi.builtin.MaximumValidation))
.filter(v -> !(v instanceof org.apache.johnzon.jsonschema.spi.builtin.RequiredValidation))
.filter(v -> !(v instanceof org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.TypeValidation))
.filter(v -> !(v instanceof org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.EnumValidation))
.filter(v -> !(v instanceof org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.MinimumValidation))
.filter(v -> !(v instanceof org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.MaximumValidation))
.filter(v -> !(v instanceof org.talend.sdk.component.form.internal.validation.jsonschema.spi.builtin.RequiredValidation))
.filter(v -> !(v instanceof PatternValidation))
.collect(Collectors.toList());
validations.add(new TypeValidation());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/**
* Copyright (C) 2006-2026 Talend Inc. - www.talend.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.talend.sdk.component.form.internal.validation.jsonschema;

import static java.util.Collections.emptyList;

import java.util.Collection;
import java.util.function.Function;
import java.util.stream.Stream;

import jakarta.json.JsonValue;

public class JsonSchemaValidator implements Function<JsonValue, ValidationResult>, AutoCloseable {

private static final ValidationResult SUCCESS = new ValidationResult(emptyList());

private final Function<JsonValue, Stream<ValidationResult.ValidationError>> validationFunction;

JsonSchemaValidator(final Function<JsonValue, Stream<ValidationResult.ValidationError>> validationFunction) {
this.validationFunction = validationFunction;
}

@Override
public ValidationResult apply(final JsonValue object) {
final Collection<ValidationResult.ValidationError> errors = validationFunction.apply(object).toList();
if (!errors.isEmpty()) {
return new ValidationResult(errors);
}
return SUCCESS;
}

@Override
public void close() {
// no-op
}

@Override
public String toString() {
return "JsonSchemaValidator{" +
"validationFunction=" + validationFunction +
'}';
}
}
Loading
Loading