mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
#102 addressing some comments (config iso mapperConfig, removing TYPE.PACKAGE from annotation, adding class javadoc, renaming MapperSettings to more logical MapperConfig)
This commit is contained in:
parent
c374f7c818
commit
af9074ce13
@ -45,7 +45,7 @@ public @interface Mapper {
|
|||||||
/**
|
/**
|
||||||
* How unmapped properties of the target type of a mapping should be
|
* How unmapped properties of the target type of a mapping should be
|
||||||
* reported. The method overrides an unmappedTargetPolicy set in a central
|
* reported. The method overrides an unmappedTargetPolicy set in a central
|
||||||
* configuration set by {@link #mapperConfig() }
|
* configuration set by {@link #config() }
|
||||||
*
|
*
|
||||||
* @return The reporting policy for unmapped target properties.
|
* @return The reporting policy for unmapped target properties.
|
||||||
*/
|
*/
|
||||||
@ -68,7 +68,7 @@ public @interface Mapper {
|
|||||||
* can be retrieved via {@code @Inject}</li>
|
* can be retrieved via {@code @Inject}</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* The method overrides an unmappedTargetPolicy set in a central configuration set
|
* The method overrides an unmappedTargetPolicy set in a central configuration set
|
||||||
* by {@link #mapperConfig() }
|
* by {@link #config() }
|
||||||
|
|
||||||
* @return The component model for the generated mapper.
|
* @return The component model for the generated mapper.
|
||||||
*/
|
*/
|
||||||
@ -79,6 +79,6 @@ public @interface Mapper {
|
|||||||
*
|
*
|
||||||
* @return a centralized class with {@link MapperConfig} annotation.
|
* @return a centralized class with {@link MapperConfig} annotation.
|
||||||
*/
|
*/
|
||||||
Class<?> mapperConfig() default void.class;
|
Class<?> config() default void.class;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,14 +26,14 @@ import java.lang.annotation.Target;
|
|||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks a class-, interface-, enum declaration or package declaration as (common) configuration.
|
* Marks a class-, interface-, enum declaration as (common) configuration.
|
||||||
*
|
*
|
||||||
* The {@link #unmappedTargetPolicy() } and {@link #componentModel() } an be overruled by a specific {@link Mapper}
|
* The {@link #unmappedTargetPolicy() } and {@link #componentModel() } can be overruled by a specific {@link Mapper}
|
||||||
* annotation. {@link #uses() } will be used in addition to what is specified in the {@link Mapper} annotation.
|
* annotation. {@link #uses() } will be used in addition to what is specified in the {@link Mapper} annotation.
|
||||||
*
|
*
|
||||||
* @author Sjaak Derksen
|
* @author Sjaak Derksen
|
||||||
*/
|
*/
|
||||||
@Target( { ElementType.TYPE, ElementType.PACKAGE } )
|
@Target( { ElementType.TYPE } )
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface MapperConfig {
|
public @interface MapperConfig {
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ public @interface MapperConfig {
|
|||||||
*
|
*
|
||||||
* @return The reporting policy for unmapped target properties.
|
* @return The reporting policy for unmapped target properties.
|
||||||
*/
|
*/
|
||||||
ReportingPolicy unmappedTargetPolicy() default ReportingPolicy.DEFAULT;
|
ReportingPolicy unmappedTargetPolicy() default ReportingPolicy.WARN;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies the component model to which the generated mapper should
|
* Specifies the component model to which the generated mapper should
|
||||||
|
@ -27,7 +27,7 @@ import org.mapstruct.ap.model.Mapper;
|
|||||||
import org.mapstruct.ap.model.MapperReference;
|
import org.mapstruct.ap.model.MapperReference;
|
||||||
import org.mapstruct.ap.model.common.TypeFactory;
|
import org.mapstruct.ap.model.common.TypeFactory;
|
||||||
import org.mapstruct.ap.option.OptionsHelper;
|
import org.mapstruct.ap.option.OptionsHelper;
|
||||||
import org.mapstruct.ap.util.MapperSettings;
|
import org.mapstruct.ap.util.MapperConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An {@link ModelElementProcessor} which converts the given {@link Mapper}
|
* An {@link ModelElementProcessor} which converts the given {@link Mapper}
|
||||||
@ -45,7 +45,7 @@ public abstract class AnnotationBasedComponentModelProcessor implements ModelEle
|
|||||||
public Mapper process(ProcessorContext context, TypeElement mapperTypeElement, Mapper mapper) {
|
public Mapper process(ProcessorContext context, TypeElement mapperTypeElement, Mapper mapper) {
|
||||||
this.typeFactory = context.getTypeFactory();
|
this.typeFactory = context.getTypeFactory();
|
||||||
|
|
||||||
String componentModel = MapperSettings.getInstanceOn( mapperTypeElement ).componentModel();
|
String componentModel = MapperConfig.getInstanceOn( mapperTypeElement ).componentModel();
|
||||||
String effectiveComponentModel = OptionsHelper.getEffectiveComponentModel(
|
String effectiveComponentModel = OptionsHelper.getEffectiveComponentModel(
|
||||||
context.getOptions(),
|
context.getOptions(),
|
||||||
componentModel
|
componentModel
|
||||||
|
@ -71,7 +71,7 @@ import org.mapstruct.ap.prism.DecoratedWithPrism;
|
|||||||
import org.mapstruct.ap.prism.MapperPrism;
|
import org.mapstruct.ap.prism.MapperPrism;
|
||||||
import org.mapstruct.ap.util.Executables;
|
import org.mapstruct.ap.util.Executables;
|
||||||
import org.mapstruct.ap.util.Filters;
|
import org.mapstruct.ap.util.Filters;
|
||||||
import org.mapstruct.ap.util.MapperSettings;
|
import org.mapstruct.ap.util.MapperConfig;
|
||||||
import org.mapstruct.ap.util.Strings;
|
import org.mapstruct.ap.util.Strings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -152,7 +152,7 @@ public class MapperCreationProcessor implements ModelElementProcessor<List<Sourc
|
|||||||
* @return The effective policy for reporting unmapped getReturnType properties.
|
* @return The effective policy for reporting unmapped getReturnType properties.
|
||||||
*/
|
*/
|
||||||
private ReportingPolicy getEffectiveUnmappedTargetPolicy(TypeElement element) {
|
private ReportingPolicy getEffectiveUnmappedTargetPolicy(TypeElement element) {
|
||||||
MapperSettings mapperSettings = MapperSettings.getInstanceOn( element );
|
MapperConfig mapperSettings = MapperConfig.getInstanceOn( element );
|
||||||
boolean setViaAnnotation = mapperSettings.isSetUnmappedTargetPolicy();
|
boolean setViaAnnotation = mapperSettings.isSetUnmappedTargetPolicy();
|
||||||
ReportingPolicy annotationValue = ReportingPolicy.valueOf( mapperSettings.unmappedTargetPolicy() );
|
ReportingPolicy annotationValue = ReportingPolicy.valueOf( mapperSettings.unmappedTargetPolicy() );
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ public class MapperCreationProcessor implements ModelElementProcessor<List<Sourc
|
|||||||
List<MapperReference> mapperReferences = new LinkedList<MapperReference>();
|
List<MapperReference> mapperReferences = new LinkedList<MapperReference>();
|
||||||
List<String> variableNames = new LinkedList<String>();
|
List<String> variableNames = new LinkedList<String>();
|
||||||
|
|
||||||
MapperSettings mapperPrism = MapperSettings.getInstanceOn( element );
|
MapperConfig mapperPrism = MapperConfig.getInstanceOn( element );
|
||||||
|
|
||||||
for ( TypeMirror usedMapper : mapperPrism.uses() ) {
|
for ( TypeMirror usedMapper : mapperPrism.uses() ) {
|
||||||
DefaultMapperReference mapperReference = DefaultMapperReference.getInstance(
|
DefaultMapperReference mapperReference = DefaultMapperReference.getInstance(
|
||||||
|
@ -48,7 +48,7 @@ import org.mapstruct.ap.prism.MapMappingPrism;
|
|||||||
import org.mapstruct.ap.prism.MappingPrism;
|
import org.mapstruct.ap.prism.MappingPrism;
|
||||||
import org.mapstruct.ap.prism.MappingsPrism;
|
import org.mapstruct.ap.prism.MappingsPrism;
|
||||||
import org.mapstruct.ap.util.AnnotationProcessingException;
|
import org.mapstruct.ap.util.AnnotationProcessingException;
|
||||||
import org.mapstruct.ap.util.MapperSettings;
|
import org.mapstruct.ap.util.MapperConfig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link ModelElementProcessor} which retrieves a list of {@link SourceMethod}s
|
* A {@link ModelElementProcessor} which retrieves a list of {@link SourceMethod}s
|
||||||
@ -99,7 +99,7 @@ public class MethodRetrievalProcessor implements ModelElementProcessor<Void, Lis
|
|||||||
|
|
||||||
//Add all methods of used mappers in order to reference them in the aggregated model
|
//Add all methods of used mappers in order to reference them in the aggregated model
|
||||||
if ( mapperRequiresImplementation ) {
|
if ( mapperRequiresImplementation ) {
|
||||||
MapperSettings mapperSettings = MapperSettings.getInstanceOn( element );
|
MapperConfig mapperSettings = MapperConfig.getInstanceOn( element );
|
||||||
if ( !mapperSettings.isValid() ) {
|
if ( !mapperSettings.isValid() ) {
|
||||||
throw new AnnotationProcessingException(
|
throw new AnnotationProcessingException(
|
||||||
"Couldn't retrieve @Mapper annotation", element, mapperSettings.getAnnotationMirror()
|
"Couldn't retrieve @Mapper annotation", element, mapperSettings.getAnnotationMirror()
|
||||||
|
@ -32,25 +32,32 @@ import org.mapstruct.ap.prism.MapperConfigPrism;
|
|||||||
import org.mapstruct.ap.prism.MapperPrism;
|
import org.mapstruct.ap.prism.MapperPrism;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Class decorating the {@link MapperPrism} with the 'default' configuration.
|
||||||
|
*
|
||||||
|
* If no configuration for a property is defined in the {@link org.mapstruct.Mapper} annotation this
|
||||||
|
* decorator will revert to the {@link org.mapstruct.Mapper#config() } defined mapper.
|
||||||
|
*
|
||||||
|
* {@link org.mapstruct.MapperConfig#uses() } will add its Mappers to the ones defined in
|
||||||
|
* {@link org.mapstruct.Mapper#uses() }
|
||||||
*
|
*
|
||||||
* @author Sjaak Derksen
|
* @author Sjaak Derksen
|
||||||
*/
|
*/
|
||||||
public class MapperSettings {
|
public class MapperConfig {
|
||||||
|
|
||||||
private final MapperPrism mapperPrism;
|
private final MapperPrism mapperPrism;
|
||||||
private final MapperConfigPrism mapperConfigPrism;
|
private final MapperConfigPrism mapperConfigPrism;
|
||||||
|
|
||||||
public static MapperSettings getInstanceOn(Element e) {
|
public static MapperConfig getInstanceOn(Element e) {
|
||||||
return new MapperSettings( MapperPrism.getInstanceOn( e ) );
|
return new MapperConfig( MapperPrism.getInstanceOn( e ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MapperSettings getInstance(AnnotationMirror mirror ) {
|
public static MapperConfig getInstance(AnnotationMirror mirror ) {
|
||||||
return new MapperSettings( MapperPrism.getInstance( mirror ) );
|
return new MapperConfig( MapperPrism.getInstance( mirror ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
private MapperSettings( MapperPrism mapperPrism ) {
|
private MapperConfig( MapperPrism mapperPrism ) {
|
||||||
this.mapperPrism = mapperPrism;
|
this.mapperPrism = mapperPrism;
|
||||||
TypeMirror typeMirror = mapperPrism.mapperConfig();
|
TypeMirror typeMirror = mapperPrism.config();
|
||||||
if ( typeMirror.getKind().equals( TypeKind.DECLARED ) ) {
|
if ( typeMirror.getKind().equals( TypeKind.DECLARED ) ) {
|
||||||
this.mapperConfigPrism = MapperConfigPrism.getInstanceOn( ( (DeclaredType) typeMirror ).asElement() );
|
this.mapperConfigPrism = MapperConfigPrism.getInstanceOn( ( (DeclaredType) typeMirror ).asElement() );
|
||||||
}
|
}
|
@ -25,7 +25,7 @@ import org.mapstruct.factory.Mappers;
|
|||||||
*
|
*
|
||||||
* @author Sjaak Derksen
|
* @author Sjaak Derksen
|
||||||
*/
|
*/
|
||||||
@Mapper(uses = { CustomMapperViaMapper.class }, mapperConfig = CentralConfig.class )
|
@Mapper(uses = { CustomMapperViaMapper.class }, config = CentralConfig.class )
|
||||||
public interface SourceTargetMapper {
|
public interface SourceTargetMapper {
|
||||||
|
|
||||||
SourceTargetMapper INSTANCE = Mappers.getMapper( SourceTargetMapper.class );
|
SourceTargetMapper INSTANCE = Mappers.getMapper( SourceTargetMapper.class );
|
||||||
|
@ -25,7 +25,7 @@ import org.mapstruct.factory.Mappers;
|
|||||||
*
|
*
|
||||||
* @author Sjaak Derksen
|
* @author Sjaak Derksen
|
||||||
*/
|
*/
|
||||||
@Mapper(uses = { CustomMapperViaMapper.class }, mapperConfig = CentralConfig.class )
|
@Mapper(uses = { CustomMapperViaMapper.class }, config = CentralConfig.class )
|
||||||
public interface SourceTargetMapperError {
|
public interface SourceTargetMapperError {
|
||||||
|
|
||||||
SourceTargetMapperError INSTANCE = Mappers.getMapper( SourceTargetMapperError.class );
|
SourceTargetMapperError INSTANCE = Mappers.getMapper( SourceTargetMapperError.class );
|
||||||
|
@ -27,7 +27,7 @@ import org.mapstruct.factory.Mappers;
|
|||||||
* @author Sjaak Derksen
|
* @author Sjaak Derksen
|
||||||
*/
|
*/
|
||||||
@Mapper(uses = { CustomMapperViaMapper.class },
|
@Mapper(uses = { CustomMapperViaMapper.class },
|
||||||
mapperConfig = CentralConfig.class,
|
config = CentralConfig.class,
|
||||||
unmappedTargetPolicy = ReportingPolicy.WARN
|
unmappedTargetPolicy = ReportingPolicy.WARN
|
||||||
)
|
)
|
||||||
public interface SourceTargetMapperWarn {
|
public interface SourceTargetMapperWarn {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user