Skip to content

Commit 6d233d2

Browse files
authored
Merge pull request #53604 from mariofusco/ann-class-check
Check unknown Jackson annotations also at class level before generating the reflection-free (de)serializers
2 parents 6a24ff3 + 3072d75 commit 6d233d2

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

  • extensions/resteasy-reactive/rest-jackson/deployment/src/main/java/io/quarkus/resteasy/reactive/jackson/deployment/processor

extensions/resteasy-reactive/rest-jackson/deployment/src/main/java/io/quarkus/resteasy/reactive/jackson/deployment/processor/JacksonCodeGenerator.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ public Collection<String> create(Collection<ClassInfo> classInfos) {
7878

7979
private Optional<String> create(ClassInfo classInfo) {
8080
String beanClassName = classInfo.name().toString();
81-
if (vetoedClass(classInfo, beanClassName) || !generatedClassNames.add(beanClassName)) {
81+
if (vetoedClass(classInfo, beanClassName) || hasUnknownClassAnnotation(classInfo)
82+
|| !generatedClassNames.add(beanClassName)) {
8283
return Optional.empty();
8384
}
8485

@@ -161,6 +162,11 @@ private static boolean vetoedClassName(String className) {
161162
return className.startsWith("java.") || className.startsWith("jakarta.") || className.startsWith("io.vertx.core.json.");
162163
}
163164

165+
private static boolean hasUnknownClassAnnotation(ClassInfo classInfo) {
166+
return classInfo.declaredAnnotations().stream()
167+
.anyMatch(a -> FieldSpecs.isUnknownAnnotation(a.name().toString()));
168+
}
169+
164170
protected enum FieldKind {
165171
OBJECT(false),
166172
ARRAY(false),
@@ -431,12 +437,13 @@ boolean isIgnoredField() {
431437
return annotations.get(JsonIgnore.class.getName()) != null;
432438
}
433439

434-
private static boolean isUnknownAnnotation(String ann) {
440+
static boolean isUnknownAnnotation(String ann) {
435441
if (ann.startsWith("com.fasterxml.jackson.")) {
436442
return !ann.equals(JsonProperty.class.getName()) &&
437443
!ann.equals(JsonIgnore.class.getName()) &&
438444
!ann.equals(JsonCreator.class.getName()) &&
439-
!ann.equals(JsonAlias.class.getName());
445+
!ann.equals(JsonAlias.class.getName()) &&
446+
!ann.equals(JsonNaming.class.getName());
440447
}
441448
return ann.startsWith("jakarta.persistence.");
442449
}

0 commit comments

Comments
 (0)