Skip to content

Unused import warning of nested classes #2907

@nikomiranda

Description

@nikomiranda

There are some unused import warnings on generated classes on version 1.5.2 that was not happening on 1.4.x

When I have a Mapper that uses a nested class for example:

Source:

package demo;

import java.util.Set;
import lombok.Data;

@Data
public class Source {
	private Set<SourceNested> nested;
}
package demo;

import lombok.Data;

@Data
public class SourceNested {
	private String prop;
}

Target:

package demo;

import lombok.Data;

@Data
public class Target {
	
	private TargetNested[] nested;
	
	@Data
	public static class TargetNested {
		private String prop;
	}
}

Mapper:

package demo.mapper;

import org.mapstruct.Mapper;

import demo.Source;
import demo.Target;

@Mapper(componentModel = "spring")
public interface DemoMapper {

    Target map(Source source);
    
}

Then the generated class have an unnecessary import

package demo.mapper;

import demo.Source;
import demo.SourceNested;
import demo.Target;
import demo.Target.TargetNested; // <------------- HERE IS WARNING. NOT NEED THIS IMPORT
import java.util.Set;
import javax.annotation.processing.Generated;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2022-06-24T19:26:33+0900",
    comments = "version: 1.5.2.Final, compiler: Eclipse JDT (IDE) 1.4.100.v20220318-0906, environment: Java 17.0.3 (Eclipse Adoptium)"
)
@Component
public class DemoMapperImpl implements DemoMapper {

    @Override
    public Target map(Source source) {
        if ( source == null ) {
            return null;
        }

        Target target = new Target();

        target.setNested( sourceNestedSetToTargetNestedArray( source.getNested() ) );

        return target;
    }

    protected Target.TargetNested sourceNestedToTargetNested(SourceNested sourceNested) {
        if ( sourceNested == null ) {
            return null;
        }

        Target.TargetNested targetNested = new Target.TargetNested();

        targetNested.setProp( sourceNested.getProp() );

        return targetNested;
    }

    protected Target.TargetNested[] sourceNestedSetToTargetNestedArray(Set<SourceNested> set) {
        if ( set == null ) {
            return null;
        }

        Target.TargetNested[] targetNestedTmp = new Target.TargetNested[set.size()];
        int i = 0;
        for ( SourceNested sourceNested : set ) {
            targetNestedTmp[i] = sourceNestedToTargetNested( sourceNested );
            i++;
        }

        return targetNestedTmp;
    }
}

Source code example:
demo.zip

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions