Package org.mapstruct

Annotation Type IterableMapping


@Target(METHOD) @Retention(CLASS) public @interface IterableMapping
Configures the mapping between two iterable like types, e.g. List<String> and List<Date>.

Note: either dateFormat(), elementTargetType() or qualifiedBy() must be specified

Example: Convert List<Float> to List<String>


 @Mapper
 public interface FloatToStringMapper {
      @IterableMapping( numberFormat = "##.00" )
      List<String> sourceToTarget(List<Float> source);
 }
 

 // generates
 public class FloatToStringMapperImpl implements FloatToStringMapper {
      @Override
      public List<String> sourceToTarget(List<Float> source) {
          List<String> list = new ArrayList<String>( source.size() );
          for ( Float float1 : source ) {
              list.add( new DecimalFormat( "##.00" ).format( float1 ) );
          }
     // ...
      }
 }
 
Supported mappings are:
  • Iterable<A> to/from Iterable<B>/Iterable<A>
  • Iterable<A> to/from B[]/A[]
  • Iterable<A> to/from Stream<B>/Stream<A>
  • A[] to/from Stream<B>/Stream<A>
  • A[] to/from B[]
  • Stream<A> to/from Stream<B>
Author:
Gunnar Morling
  • Element Details

    • dateFormat

      String dateFormat
      A format string as processable by SimpleDateFormat if the annotated method maps from an iterable of String to an iterable Date or vice-versa. Will be ignored for all other element types.

      If the locale() is also specified, the format will consider the specified locale when processing the date. Otherwise, the system's default locale will be used.

      Returns:
      A date format string as processable by SimpleDateFormat.
      See Also:
      Default:
      ""
    • numberFormat

      String numberFormat
      A format string as processable by DecimalFormat if the annotated method maps from a Number to a String or vice-versa. Will be ignored for all other element types.

      If the locale() is also specified, the number format will be applied in the context of the given locale. Otherwise, the system's default locale will be used to process the number format.

      Returns:
      A decimal format string as processable by DecimalFormat.
      See Also:
      Default:
      ""
    • locale

      String locale
      Specifies the locale to be used when processing dateFormat() or numberFormat().

      The locale should be a plain tag representing the language, such as "en" for English, "de" for German, etc.

      If no locale is specified, the system's default locale will be used.

      Returns:
      A string representing the locale to be used when formatting dates or numbers.
      Default:
      ""
    • qualifiedBy

      Class<? extends Annotation>[] qualifiedBy
      A qualifier can be specified to aid the selection process of a suitable mapper. This is useful in case multiple mappers (hand written of internal) qualify and result in an 'Ambiguous mapping methods found' error. A qualifier is a custom annotation and can be placed on either a hand written mapper class or a method.
      Returns:
      the qualifiers
      See Also:
      Default:
      {}
    • qualifiedByName

      String[] qualifiedByName
      String-based form of qualifiers; When looking for a suitable mapping method to map this iterable mapping method's element type, MapStruct will only consider those methods carrying directly or indirectly (i.e. on the class-level) a Named annotation for each of the specified qualifier names.

      Note that annotation-based qualifiers are generally preferable as they allow more easily to find references and are safe for refactorings, but name-based qualifiers can be a less verbose alternative when requiring a large number of qualifiers as no custom annotation types are needed.

      Returns:
      One or more qualifier name(s)
      See Also:
      Default:
      {}
    • elementTargetType

      Class<?> elementTargetType
      Specifies the type of the element to be used in the result of the mapping method in case multiple mapping methods qualify.
      Returns:
      the elementTargetType to select
      Default:
      void.class
    • nullValueMappingStrategy

      NullValueMappingStrategy nullValueMappingStrategy
      The strategy to be applied when null is passed as source value to this iterable mapping. If no strategy is configured, the strategy given via MapperConfig.nullValueMappingStrategy() or Mapper.nullValueMappingStrategy() will be applied, using NullValueMappingStrategy.RETURN_NULL by default.
      Returns:
      The strategy to be applied when null is passed as source value to the methods of this mapping.
      Default:
      RETURN_NULL
    • elementMappingControl

      Class<? extends Annotation> elementMappingControl
      Allows detailed control over the mapping process.
      Returns:
      the mapping control
      Since:
      1.4
      See Also:
      Default:
      org.mapstruct.control.MappingControl.class