Package org.mapstruct
Annotation Type ValueMapping
-
@Repeatable(ValueMappings.class) @Retention(CLASS) @Target({METHOD,ANNOTATION_TYPE}) public @interface ValueMapping
Configures the mapping of source constant value to target constant value.Supported mappings are
- Enumeration to Enumeration
Example 2:public enum OrderType { RETAIL, B2B, C2C, EXTRA, STANDARD, NORMAL } public enum ExternalOrderType { RETAIL, B2B, SPECIAL, DEFAULT } @ValueMapping(target = "SPECIAL", source = "EXTRA"), @ValueMapping(target = "DEFAULT", source = "STANDARD"), @ValueMapping(target = "DEFAULT", source = "NORMAL") ExternalOrderType orderTypeToExternalOrderType(OrderType orderType);
Mapping result: +---------------------+----------------------------+ | OrderType | ExternalOrderType | +---------------------+----------------------------+ | null | null | | OrderType.EXTRA | ExternalOrderType.SPECIAL | | OrderType.STANDARD | ExternalOrderType.DEFAULT | | OrderType.NORMAL | ExternalOrderType.DEFAULT | | OrderType.RETAIL | ExternalOrderType.RETAIL | | OrderType.B2B | ExternalOrderType.B2B | +---------------------+----------------------------+
Example 3: MapStruct will WARN on incomplete mappings. However, if for some reason no match is found, an@ValueMapping( source = MappingConstants.NULL, target = "DEFAULT" ), @ValueMapping( source = "STANDARD", target = MappingConstants.NULL ), @ValueMapping( source = MappingConstants.ANY_REMAINING, target = "SPECIAL" ) ExternalOrderType orderTypeToExternalOrderType(OrderType orderType);
Mapping result: +---------------------+----------------------------+ | OrderType | ExternalOrderType | +---------------------+----------------------------+ | null | ExternalOrderType.DEFAULT | | OrderType.STANDARD | null | | OrderType.RETAIL | ExternalOrderType.RETAIL | | OrderType.B2B | ExternalOrderType.B2B | | OrderType.NORMAL | ExternalOrderType.SPECIAL | | OrderType.EXTRA | ExternalOrderType.SPECIAL | +---------------------+----------------------------+IllegalStateException
will be thrown. This compile-time error can be avoided by usingMappingConstants.THROW_EXCEPTION
fortarget()
. It will result anIllegalArgumentException
at runtime.@ValueMapping( source = "STANDARD", target = "DEFAULT" ), @ValueMapping( source = "C2C", target = MappingConstants.THROW_EXCEPTION ) ExternalOrderType orderTypeToExternalOrderType(OrderType orderType);
Mapping result:IllegalArgumentException
with the error message: Unexpected enum constant: C2C- Author:
- Sjaak Derksen
-
-
Element Detail
-
source
String source
The source value constant to use for this mapping.Valid values:
- enum constant name
MappingConstants.NULL
MappingConstants.ANY_REMAINING
MappingConstants.ANY_UNMAPPED
NOTE:When using <ANY_REMAINING>, MapStruct will perform the normal name based mapping, in which source is mapped to target based on enum identifier equality. Using <ANY_UNMAPPED> will not apply name based mapping.
- Returns:
- The source value.
-
-
-
target
String target
The target value constant to use for this mapping.Valid values:
- enum constant name
MappingConstants.NULL
MappingConstants.THROW_EXCEPTION
- Returns:
- The target value.
-
-