@Target(value=METHOD) @Retention(value=CLASS) public @interface AfterMapping
return
statement
of the mapping method. The method can be implemented in an abstract mapper class, be declared in a type (class or
interface) referenced in Mapper.uses()
, or in a type used as @
Context
parameter in order to
be used in a mapping method.
The method invocation is only generated if the return type of the method (if non-void
) is assignable to the
return type of the mapping method and all parameters can be assigned by the available source, target or
context parameters of the mapping method:
@
MappingTarget
is populated with the target instance of the mapping.
@
TargetType
is populated with the target type of the mapping.@
Context
are populated with the context parameters of the mapping
method.
For non-void
methods, the return value of the method invocation is returned as the result of the mapping
method if it is not null
.
All after-mapping methods that can be applied to a mapping method will be used. @
Qualifier
/
@
Named
can be used to filter the methods to use.
The order of the method invocation is determined by their location of definition:
@
Context
parameters, ordered by the parameter order.Mapper.uses()
, in the order of the type declaration in the annotation.
Example:
@AfterMapping
public void calledWithoutArgs() {
// ...
}
@AfterMapping
public void calledWithSourceAndTargetType(SourceEntity anySource, @TargetType Class<?> targetType) {
// ...
}
@AfterMapping
public void calledWithSourceAndTarget(Object anySource, @MappingTarget TargetDto target) {
// ...
}
public abstract TargetDto toTargetDto(SourceEntity source);
// generates:
public TargetDto toTargetDto(SourceEntity source) {
if ( source == null ) {
return null;
}
TargetDto targetDto = new TargetDto();
// actual mapping code
calledWithoutArgs();
calledWithSourceAndTargetType( source, TargetDto.class );
calledWithSourceAndTarget( source, targetDto );
return targetDto;
}
BeforeMapping
,
Context
Copyright © 2012-2021 MapStruct Authors; All rights reserved. Released under the Apache Software License 2.0.