Skip to content

Compilation Error - Duplicate Methods generated #3591

@zyberzebra

Description

@zyberzebra

Expected behavior

No duplicated methods.

leads to following error: method beanListToBeanDTOList(java.util.List<Bean>) is already defined

Actual behavior

public class BeanMapperImpl implements BeanMapper {
    @Override
    public BeanDTO map(Bean source, BeanDTO target) {
        if ( source == null ) { return target; }
        if ( target.getBeans() != null ) {
            List<BeanDTO> list = beanListToBeanDTOList( source.getBeans() );
            if ( list != null ) {
                target.getBeans().clear();
                target.getBeans().addAll( list );
            } else { target.setBeans( null ); }
        } else {
            List<BeanDTO> list = beanListToBeanDTOList( source.getBeans() );
            if ( list != null ) { target.setBeans( list ); }
        }
        return target;
    }
    protected List<BeanDTO> beanListToBeanDTOList(List<Bean> list) {
        if ( list == null ) { return null; }
        List<BeanDTO> list1 = new ArrayList<BeanDTO>( list.size() );
        for ( Bean bean : list ) { list1.add( beanToBeanDTO( bean ) ); }
        return list1;
    }
    protected BeanDTO beanToBeanDTO(Bean bean) {
        if ( bean == null ) { return null; }
        BeanDTO beanDTO = new BeanDTO();
        beanDTO.setBeans( beanListToBeanDTOList( bean.getBeans() ) );
        return beanDTO;
    }
    protected List<BeanDTO> beanListToBeanDTOList(List<Bean> list) {
        if ( list == null ) { return null; }
        List<BeanDTO> list1 = new ArrayList<BeanDTO>( list.size() );
        for ( Bean bean : list ) { list1.add( beanToBeanDTO( bean ) ); }
        return list1;
    }
}

Steps to reproduce the problem

SourceFiles to reproduce:

public class Bean {
    private List<Bean> beans;
    public List<Bean> getBeans() { return beans; }
    public void setBeans(List<Bean> beans) { this.beans = beans; }
}
public class BeanDTO {
    private List<BeanDTO> beans;
    public List<BeanDTO> getBeans() { return beans; }
    public void setBeans(List<BeanDTO> beans) { this.beans = beans; }
}
@Mapper
public interface BeanMapper {
    BeanMapper INSTANCE = Mappers.getMapper(BeanMapper.class);
    @Mapping(source = "beans", target = "beans")
    BeanDTO map(Bean source, @MappingTarget BeanDTO target);
}

MapStruct Version

1.5.5.Final

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions