public interface ListDelimiterHandler
Definition of an interface that controls the handling of list delimiters in configuration properties.
AbstractConfiguration
supports list delimiters in
property values. If such a delimiter is found, the value actually contains multiple values and has to be split. This
is useful for instance for PropertiesConfiguration
:
properties files that have to be compatible with the java.util.Properties
class cannot have multiple
occurrences of a single property key, therefore a different storage scheme for multi-valued properties is needed. A
possible storage scheme could look as follows:
myProperty=value1,value2,value3
Here a comma is used as list delimiter. When parsing this property (and using a corresponding
ListDelimiterHandler
implementation) the string value is split, and three values are added for the property
key.
A ListDelimiterHandler
knows how to parse and to escape property values. It is called by concrete
Configuration
implementations when they have to deal with properties with multiple values.
Modifier and Type | Field and Description |
---|---|
static ValueTransformer |
NOOP_TRANSFORMER
A specialized
ValueTransformer implementation which does no transformation. |
Modifier and Type | Method and Description |
---|---|
Object |
escape(Object value,
ValueTransformer transformer)
Escapes the specified single value object.
|
Object |
escapeList(List<?> values,
ValueTransformer transformer)
Escapes all values in the given list and concatenates them to a single string.
|
Iterable<?> |
parse(Object value)
Parses the specified value for list delimiters and splits it if necessary.
|
Collection<String> |
split(String s,
boolean trim)
Splits the specified string at the list delimiter and returns a collection with all extracted components.
|
static final ValueTransformer NOOP_TRANSFORMER
ValueTransformer
implementation which does no transformation. The transformValue()
method just returns the passed in object without changes. This instance can be used by configurations which do not
require additional encoding.Iterable<?> parse(Object value)
Iterable
. It is the responsibility of this
method to return an Iterable
which contains all extracted values.value
- the value to be parsedIterable
allowing access to all extracted valuesCollection<String> split(String s, boolean trim)
trim
flag determines whether each extracted component should be trimmed. This
typically makes sense as the list delimiter may be surrounded by whitespace. However, there may be specific use cases
in which automatic trimming is not desired.s
- the string to be splittrim
- a flag whether each component of the string is to be trimmedObject escape(Object value, ValueTransformer transformer)
value
- the value to be escapedtransformer
- a ValueTransformer
for an additional encoding (must not be null)Object escapeList(List<?> values, ValueTransformer transformer)
values
- the list with all the values to be converted to a single valuetransformer
- a ValueTransformer
for an additional encoding (must not be null)Copyright © 2001–2022 The Apache Software Foundation. All rights reserved.