Package org.mapstruct
Annotation Type Qualifier
-
@Target(ANNOTATION_TYPE) @Retention(CLASS) public @interface Qualifier
Declares an annotation type to be a qualifier. Qualifier annotations allow unambiguously identify a suitable mapping method in case several methods qualify to map a bean property, iterable element etc.Can be used in:
Mapping.qualifiedBy()
BeanMapping.qualifiedBy()
IterableMapping.qualifiedBy()
MapMapping.keyQualifiedBy()
MapMapping.valueQualifiedBy()
SubclassMapping.qualifiedBy()
Example:
// create qualifiers @Qualifier @Target(ElementType.TYPE) @Retention(RetentionPolicy.CLASS) public @interface TitleTranslator {} @Qualifier @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) public @interface EnglishToGerman {} @Qualifier @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) public @interface GermanToEnglish {}
// we can create class with map methods @TitleTranslator public class Titles { @EnglishToGerman public String translateTitleEnglishToGerman(String title) { // some mapping logic } @GermanToEnglish public String translateTitleGermanToEnglish(String title) { // some mapping logic } }
// usage @Mapper( uses = Titles.class ) public interface MovieMapper { @Mapping( target = "title", qualifiedBy = { TitleTranslator.class, EnglishToGerman.class } ) GermanRelease toGerman( OriginalRelease movies ); }
NOTE: Qualifiers should have// generates public class MovieMapperImpl implements MovieMapper { private final Titles titles = new Titles(); @Override public GermanRelease toGerman(OriginalRelease movies) { if ( movies == null ) { return null; } GermanRelease germanRelease = new GermanRelease(); germanRelease.setTitle( titles.translateTitleEnglishToGerman( movies.getTitle() ) ); return germanRelease; } }
RetentionPolicy.CLASS
.- Author:
- Sjaak Derksen
- See Also:
Named