diff --git a/processor/src/main/resources/org/mapstruct/ap/internal/model/MethodReference.ftl b/processor/src/main/resources/org/mapstruct/ap/internal/model/MethodReference.ftl index d8236140f..6ccdf2687 100644 --- a/processor/src/main/resources/org/mapstruct/ap/internal/model/MethodReference.ftl +++ b/processor/src/main/resources/org/mapstruct/ap/internal/model/MethodReference.ftl @@ -15,7 +15,7 @@ <#if static><@includeModel object=providingParameter.type/><#else>${providingParameter.name}.<@methodCall/> <#-- method is referenced java8 static method in the mapper to implement (interface) --> <#elseif static> - <@includeModel object=definingType/>.<@methodCall/> + <@includeModel object=definingType raw=true/>.<@methodCall/> <#elseif constructor> new <@includeModel object=definingType/><#if (parameterBindings?size > 0)>( <@arguments/> )<#else>() <#elseif methodChaining> diff --git a/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBase.java b/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBase.java new file mode 100644 index 000000000..025acba4a --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBase.java @@ -0,0 +1,48 @@ +/* + * Copyright MapStruct Authors. + * + * Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package org.mapstruct.ap.test.selection.generics; + +import java.util.Map; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +public interface GenericMapperBase { + + T toDto(Map prop); + + @Named( "StringArrayToString" ) + static String stringArrayToString(Property property) { + return "converted"; + } +} + +class Property { + +} + +class ProjectDto { + private String productionSite; + + public void setProductionSite(String productionSite) { + this.productionSite = productionSite; + } + + public String getProductionSite() { + return productionSite; + } +} + +@Mapper +interface ProjectMapper extends GenericMapperBase { + ProjectMapper INSTANCE = Mappers.getMapper( ProjectMapper.class ); + + @Mapping( target = "productionSite", source = "productionSite", qualifiedByName = "StringArrayToString" ) + @Override + ProjectDto toDto(Map projectProp); +} diff --git a/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBaseTest.java b/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBaseTest.java new file mode 100644 index 000000000..1fe4930e2 --- /dev/null +++ b/processor/src/test/java/org/mapstruct/ap/test/selection/generics/GenericMapperBaseTest.java @@ -0,0 +1,25 @@ +/* + * Copyright MapStruct Authors. + * + * Licensed under the Apache License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0 + */ +package org.mapstruct.ap.test.selection.generics; + +import org.mapstruct.ap.testutil.IssueKey; +import org.mapstruct.ap.testutil.ProcessorTest; +import org.mapstruct.ap.testutil.WithClasses; + +/** + * @author Ben Zegveld + */ +@WithClasses( { + GenericMapperBase.class +} ) +@IssueKey( "2755" ) +class GenericMapperBaseTest { + + @ProcessorTest + void generatesCompilableCode() { + } + +}