Polishing ProblemDetail Javadoc

This commit is contained in:
rstoyanchev 2022-09-22 11:26:14 +01:00
parent a409e0fd2c
commit 74df50c906
2 changed files with 11 additions and 3 deletions

View File

@ -156,8 +156,12 @@ public class ProblemDetail {
/**
* Set a "dynamic" property to be added to a generic {@link #getProperties()
* properties map}.
* <p>When Jackson JSON is present on the classpath, any properties set here
* are rendered as top level key-value pairs in the output JSON. Otherwise,
* they are rendered as a {@code "properties"} sub-map.
* @param name the property name
* @param value the property value
* @see org.springframework.http.converter.json.ProblemDetailJacksonMixin
*/
public void setProperty(String name, Object value) {
this.properties = (this.properties != null ? this.properties : new LinkedHashMap<>());
@ -214,6 +218,10 @@ public class ProblemDetail {
* Return a generic map of properties that are not known ahead of time,
* possibly {@code null} if no properties have been added. To add a property,
* use {@link #setProperty(String, Object)}.
* <p>When Jackson JSON is present on the classpath, the content of this map
* is unwrapped and rendered as top level key-value pairs in the output JSON.
* Otherwise, they are rendered as a {@code "properties"} sub-map.
* @see org.springframework.http.converter.json.ProblemDetailJacksonMixin
*/
@Nullable
public Map<String, Object> getProperties() {

View File

@ -3525,9 +3525,9 @@ back on "application/problem+json".
Applications can extend `ProblemDetail` with non-standard fields in one of two ways:
. Add properties to the generic `properties` map in `ProblemDetail`. When using
the Jackson library, this `properties` map is unwrapped and as top level JSON
properties with the help of `ProblemDetailJacksonMixin`.
. Add properties to the generic `properties` map in `ProblemDetail`. When the Jackson JSON
library is present, this `properties` map is unwrapped and rendered as top level
key-value pairs in the output JSON, with the help of `ProblemDetailJacksonMixin`.
. Create a `ProblemDetail` subclass that defines the extra, non-standard fields.
Subclasses can use a protected copy constructor in order to re-create an existing
`ProblemDetail` as a subclass. This can be done centrally from an `@ControllerAdvice`