Browse Source

Remove ContactBased and HasId pre-registration

Pre-registering abstract intermediate types pulls in their full
inheritance chain (UUIDBased, HasUUID) as broken $ref entries.
Leave *Object schemas for these types as-is.
pull/15371/head
Viacheslav Klimov 6 months ago
parent
commit
cf93b59433
Failed to extract signature
  1. 17
      application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java

17
application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java

@ -62,10 +62,8 @@ import org.springframework.context.annotation.Profile;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.ContactBased;
import org.thingsboard.server.common.data.cf.CalculatedField; import org.thingsboard.server.common.data.cf.CalculatedField;
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode; import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
import org.thingsboard.server.common.data.id.HasId;
import org.thingsboard.server.exception.ThingsboardCredentialsExpiredResponse; import org.thingsboard.server.exception.ThingsboardCredentialsExpiredResponse;
import org.thingsboard.server.exception.ThingsboardErrorResponse; import org.thingsboard.server.exception.ThingsboardErrorResponse;
import org.thingsboard.server.service.security.auth.rest.LoginRequest; import org.thingsboard.server.service.security.auth.rest.LoginRequest;
@ -359,16 +357,11 @@ public class SwaggerConfiguration {
.addSchemas("ThingsboardErrorResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ThingsboardErrorResponse.class)).schema) .addSchemas("ThingsboardErrorResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ThingsboardErrorResponse.class)).schema)
.addSchemas("ThingsboardCredentialsExpiredResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ThingsboardCredentialsExpiredResponse.class)).schema) .addSchemas("ThingsboardCredentialsExpiredResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ThingsboardCredentialsExpiredResponse.class)).schema)
.addSchemas("ThingsboardErrorCode", errorCodeSchema) .addSchemas("ThingsboardErrorCode", errorCodeSchema)
// Pre-register types to prevent springdoc resolution-order issues: // Pre-register types referenced with @JsonIgnoreProperties on fields
// - Types referenced with @JsonIgnoreProperties on fields (e.g. CalculatedField // (e.g. CalculatedField via EntityExportData.calculatedFields) to prevent
// via EntityExportData.calculatedFields) to prevent field-level ignore lists // field-level ignore lists from polluting the global schema when resolution
// from polluting the global schema. // order varies.
// - Intermediate interfaces/classes (e.g. ContactBased, HasId) that springdoc .addSchemas("CalculatedField", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(CalculatedField.class)).schema);
// only creates as "*Object" byproducts; pre-registering the base name lets
// the duplicate removal pass clean them up.
.addSchemas("CalculatedField", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(CalculatedField.class)).schema)
.addSchemas("ContactBased", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ContactBased.class)).schema)
.addSchemas("HasId", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(HasId.class)).schema);
} }
private OperationCustomizer operationCustomizer() { private OperationCustomizer operationCustomizer() {

Loading…
Cancel
Save