Skip to content

Commit

Permalink
#1821 nullpointer due to @BeanMapping via inheritance (#1822) (#1932)
Browse files Browse the repository at this point in the history
(cherry picked from commit ade4f4d)
  • Loading branch information
sjaakd authored and filiphr committed Sep 29, 2019
1 parent b32cf92 commit 0c1c5b7
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class BeanMapping {
*/
public static BeanMapping forInheritance( BeanMapping map ) {
return new BeanMapping(
map.selectionParameters,
SelectionParameters.forInheritance( map.selectionParameters ),
map.nullValueMappingStrategy,
map.nullValuePropertyMappingStrategy,
map.nullValueCheckStrategy,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ public class SelectionParameters {
private final Types typeUtils;
private final SourceRHS sourceRHS;

/**
* Returns new selection parameters
*
* ResultType is not inherited.
*
* @param selectionParameters
* @return
*/
public static SelectionParameters forInheritance(SelectionParameters selectionParameters) {
return new SelectionParameters(
selectionParameters.qualifiers,
selectionParameters.qualifyingNames,
null,
selectionParameters.typeUtils
);
}

public SelectionParameters(List<TypeMirror> qualifiers, List<String> qualifyingNames, TypeMirror resultType,
Types typeUtils) {
this( qualifiers, qualifyingNames, resultType, typeUtils, null );
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* 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.bugs._1821;

import org.mapstruct.BeanMapping;
import org.mapstruct.InheritConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

@Mapper
public interface Issue1821Mapper {

Issue1821Mapper INSTANCE = Mappers.getMapper( Issue1821Mapper.class );

@BeanMapping( resultType = Target.class )
Target map(Source source);

@InheritConfiguration( name = "map" )
ExtendedTarget mapExtended(Source source);

class Target {
}

class ExtendedTarget extends Target {
}

class Source {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* 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.bugs._1821;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mapstruct.ap.testutil.IssueKey;
import org.mapstruct.ap.testutil.WithClasses;
import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner;

@IssueKey("1797")
@RunWith( AnnotationProcessorTestRunner.class)
@WithClasses( Issue1821Mapper.class )
public class Issue1821Test {

@Test
public void shouldNotGiveNullPtr() {
Issue1821Mapper.INSTANCE.map( new Issue1821Mapper.Source() );
}

}

0 comments on commit 0c1c5b7

Please sign in to comment.