Package org.springframework.core.codec

# Class Hints

java.lang.Object
org.springframework.core.codec.Hints

public abstract class Hints extends Object
Constants and convenience methods for working with hints.

Since:
  5.1
Author:
  Rossen Stoyanchev
See Also:
  - `ResourceRegionEncoder.BOUNDARY_STRING_HINT`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`LOG_PREFIX_HINT`
Name of hint exposing a prefix to use for correlating log messages.
`static final String`
`SUPPRESS_LOGGING_HINT`
Name of boolean hint whether to avoid logging data either because it's potentially sensitive, or because it has been logged by a composite encoder, for example, for multipart requests.

## Constructor Summary

Constructors
Constructor
Description
`Hints()`

## Method Summary

Modifier and Type
Method
Description
`static Map<String,Object>`
`from(String hintName, Object value)`
Create a map wit a single hint via `Collections.singletonMap(K, V)`.
`static String`
`getLogPrefix(Map<String,Object> hints)`
Obtain the hint `LOG_PREFIX_HINT`, if present, or an empty String.
`static <T> T`
`getRequiredHint(Map<String,Object> hints, String hintName)`
Obtain the value for a required hint.
`static boolean`
`isLoggingSuppressed(Map<String,Object> hints)`
Whether to suppress logging based on the hint `SUPPRESS_LOGGING_HINT`.
`static Map<String,Object>`
`merge(Map<String,Object> hints, String hintName, Object hintValue)`
Merge a single hint into a map of hints, possibly creating and copying all hints into a new map, or otherwise if the map of hints is empty, creating a new single entry map.
`static Map<String,Object>`
`merge(Map<String,Object> hints1, Map<String,Object> hints2)`
Merge two maps of hints, creating and copying into a new map if both have values, or returning the non-empty map, or an empty map if both are empty.
`static Map<String,Object>`
`none()`
Return an empty map of hints via `Collections.emptyMap()`.
`static void`
`touchDataBuffer(DataBuffer buffer, Map<String,Object> hints, org.apache.commons.logging.Log logger)`
If the hints contain a `LOG_PREFIX_HINT` and the given logger has DEBUG level enabled, apply the log prefix as a hint to the given buffer via `DataBufferUtils.touch(DataBuffer, Object)`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### LOG_PREFIX_HINT

public static final String LOG_PREFIX_HINT
Name of hint exposing a prefix to use for correlating log messages.

### SUPPRESS_LOGGING_HINT

public static final String SUPPRESS_LOGGING_HINT
Name of boolean hint whether to avoid logging data either because it's potentially sensitive, or because it has been logged by a composite encoder, for example, for multipart requests.

## Constructor Details

### Hints

public Hints()

## Method Details

### from

public static Map<String,Object> from(String hintName, Object value)
Create a map wit a single hint via `Collections.singletonMap(K, V)`.

Parameters:
  `hintName` - the hint name
  `value` - the hint value
Returns:
  the created map

### none

public static Map<String,Object> none()
Return an empty map of hints via `Collections.emptyMap()`.

Returns:
  the empty map

### getRequiredHint

public static <T> T getRequiredHint(@Nullable Map<String,Object> hints, String hintName)
Obtain the value for a required hint.

Type Parameters:
  `T` - the hint type to cast to
Parameters:
  `hints` - the hints map
  `hintName` - the required hint name
Returns:
  the hint value
Throws:
  `IllegalArgumentException` - if the hint is not found

### getLogPrefix

public static String getLogPrefix(@Nullable Map<String,Object> hints)
Obtain the hint `LOG_PREFIX_HINT`, if present, or an empty String.

Parameters:
  `hints` - the hints passed to the encode method
Returns:
  the log prefix

### isLoggingSuppressed

public static boolean isLoggingSuppressed(@Nullable Map<String,Object> hints)
Whether to suppress logging based on the hint `SUPPRESS_LOGGING_HINT`.

Parameters:
  `hints` - the hints map
Returns:
  whether logging of data is allowed

### merge

public static Map<String,Object> merge(@Nullable Map<String,Object> hints1, @Nullable Map<String,Object> hints2)
Merge two maps of hints, creating and copying into a new map if both have values, or returning the non-empty map, or an empty map if both are empty.

Parameters:
  `hints1` - 1st map of hints
  `hints2` - 2nd map of hints
Returns:
  a single map with hints from both

### merge

public static Map<String,Object> merge(@Nullable Map<String,Object> hints, String hintName, Object hintValue)
Merge a single hint into a map of hints, possibly creating and copying all hints into a new map, or otherwise if the map of hints is empty, creating a new single entry map.

Parameters:
  `hints` - a map of hints to be merged
  `hintName` - the hint name to merge
  `hintValue` - the hint value to merge
Returns:
  a single map with all hints

### touchDataBuffer

public static void touchDataBuffer(DataBuffer buffer, @Nullable Map<String,Object> hints, org.apache.commons.logging.Log logger)
If the hints contain a `LOG_PREFIX_HINT` and the given logger has DEBUG level enabled, apply the log prefix as a hint to the given buffer via `DataBufferUtils.touch(DataBuffer, Object)`.

Parameters:
  `buffer` - the buffer to touch
  `hints` - the hints map to check for a log prefix
  `logger` - the logger whose level to check
Since:
  5.3.2