Skip to content

Commit 780153e

Browse files
authored
fix: do not auto-expose properties absent from @JsonIgnoreProperties (#2068)
Only when annotation is used on the referencing type. Properties still exposed when annotation is on declaring class or descendant. Signed-off-by: Michael Edgar <[email protected]>
1 parent 55275e5 commit 780153e

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/IgnoreResolver.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ public boolean configuresVisibility(AnnotationTarget reference) {
215215
private Visibility declaringClassIgnore(String propertyName, AnnotationTarget target) {
216216
AnnotationInstance declaringClassJIP = context.annotations().getAnnotation(TypeUtil.getDeclaringClass(target),
217217
getNames());
218-
return shouldIgnoreTarget(declaringClassJIP, propertyName);
218+
return shouldIgnoreTarget(declaringClassJIP, propertyName, Visibility.EXPOSED);
219219
}
220220

221221
/**
@@ -244,18 +244,19 @@ private Visibility nestingPropertyIgnore(AnnotationTarget nesting, String proper
244244
return Visibility.UNSET;
245245
}
246246
AnnotationInstance nestedTypeJIP = context.annotations().getAnnotation(nesting, getNames());
247-
return shouldIgnoreTarget(nestedTypeJIP, propertyName);
247+
return shouldIgnoreTarget(nestedTypeJIP, propertyName, Visibility.UNSET);
248248
}
249249

250-
private Visibility shouldIgnoreTarget(AnnotationInstance jipAnnotation, String targetName) {
250+
private Visibility shouldIgnoreTarget(AnnotationInstance jipAnnotation, String targetName,
251+
Visibility unlistedVisibility) {
251252
if (jipAnnotation == null || jipAnnotation.value() == null) {
252253
return Visibility.UNSET;
253254
}
254255

255256
if (Arrays.asList(jipAnnotation.value().asStringArray()).contains(targetName)) {
256257
return Visibility.IGNORED;
257258
} else {
258-
return Visibility.EXPOSED;
259+
return unlistedVisibility;
259260
}
260261
}
261262

@@ -268,7 +269,7 @@ public List<DotName> getNames() {
268269
public Visibility getDescendantVisibility(String propertyName, List<ClassInfo> descendants) {
269270
for (ClassInfo descendant : descendants) {
270271
AnnotationInstance declaringClassJIP = context.annotations().getAnnotation(descendant, getNames());
271-
Visibility visibility = shouldIgnoreTarget(declaringClassJIP, propertyName);
272+
Visibility visibility = shouldIgnoreTarget(declaringClassJIP, propertyName, Visibility.EXPOSED);
272273

273274
if (visibility != Visibility.UNSET) {
274275
return visibility;

extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/JsonViewTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.jboss.jandex.Index;
2121
import org.junit.jupiter.api.Test;
2222

23+
import com.fasterxml.jackson.annotation.JsonIgnore;
2324
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2425
import com.fasterxml.jackson.annotation.JsonView;
2526

@@ -132,6 +133,9 @@ class Abridged {
132133

133134
@Schema(name = "Role")
134135
class Role {
136+
@JsonIgnore
137+
protected java.util.logging.Logger logger;
138+
135139
@JsonView(Views.Full.class)
136140
private UUID id;
137141
@JsonView(Views.Ingest.class)

0 commit comments

Comments
 (0)