wip: Generate and configure OpenAPI spec
Some checks failed
Build / build (pull_request) Successful in 1m59s
Check formatting / check-formatting (pull_request) Failing after 19s

- Create two (non-functioning) demo endpoints to check the swagger UI with
- Configure Jackson to only serialize specific attributes
- Configure SpringDoc so that only attributes known to Jackson are shown
- Add some shortcut annotations for Json formatting
This commit is contained in:
Magnus Leßmann (@Mark.TwoFive) 2025-06-19 23:07:27 +02:00
parent 5dde208e72
commit 8a843dc300
Signed by: Mark.TwoFive
GPG key ID: 58204042FE30B10C
7 changed files with 190 additions and 11 deletions

View file

@ -0,0 +1,35 @@
package de.mlessmann.certassist.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.MapperFeature;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfiguration {
/**
* Customizes the objectMapper so that ONLY specifically annotated fields are serialized.
* Other fields MUST NOT be serialized since they may contain sensitive information!
*/
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizeObjectMapper() {
return builder -> builder
.featuresToDisable(
MapperFeature.AUTO_DETECT_FIELDS,
MapperFeature.AUTO_DETECT_GETTERS,
MapperFeature.AUTO_DETECT_IS_GETTERS
)
.serializationInclusion(JsonInclude.Include.NON_EMPTY)
.visibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)
.visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE)
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE)
.visibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE)
.visibility(PropertyAccessor.SETTER, JsonAutoDetect.Visibility.PUBLIC_ONLY)
.visibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.PUBLIC_ONLY)
.build();
}
}