diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AbstractAdapterMapperGenerator.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AbstractAdapterMapperGenerator.java index 64989db..c3e9e4a 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AbstractAdapterMapperGenerator.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AbstractAdapterMapperGenerator.java @@ -12,7 +12,6 @@ import io.github.linpeilie.processor.metadata.AbstractAdapterMethodMetadata; import io.github.linpeilie.processor.metadata.AdapterMapMethodMetadata; import io.github.linpeilie.processor.metadata.AdapterMethodMetadata; import io.github.linpeilie.utils.ClassUtil; -import io.github.linpeilie.utils.MapperUtils; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java index 5a4031e..a21f605 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java @@ -29,6 +29,7 @@ import io.github.linpeilie.processor.metadata.AutoMapMapperMetadata; import io.github.linpeilie.processor.metadata.AutoMapperMetadata; import io.github.linpeilie.processor.metadata.AutoMappingMetadata; import io.github.linpeilie.processor.utils.ExceptionUtils; +import io.github.linpeilie.processor.utils.MapperUtils; import io.github.linpeilie.processor.utils.ObjectUtils; import io.github.linpeilie.utils.CollectionUtils; import io.github.linpeilie.utils.StrUtil; @@ -756,7 +757,15 @@ public class AutoMapperProcessor extends AbstractProcessor { AutoMapperMetadata metadata = initAutoMapperMetadata(source, target, autoMapperGem.cycleAvoiding().get()); - metadata.setUsesClassNameList(transToClassNameList(autoMapperGem.uses().get())); + List usesClassNameList = transToClassNameList(autoMapperGem.uses().get()); + List useEnumClassNameList = transToClassNameList(autoMapperGem.useEnums().get()).stream() + .map(enumClass -> ClassName.get(MapperUtils.getMapperPackage(enumClass.packageName()), + MapperUtils.getEnumMapperClassName(enumClass.simpleName()))) + .collect(Collectors.toList()); + + usesClassNameList.addAll(useEnumClassNameList); + + metadata.setUsesClassNameList(usesClassNameList); metadata.setImportsClassNameList(transToClassNameList(autoMapperGem.imports().get())); metadata.setFieldMappingList(autoMappingMetadataList); metadata.setFieldReverseMappingList(reverseMappingMetadataList); @@ -966,7 +975,7 @@ public class AutoMapperProcessor extends AbstractProcessor { private List transToClassNameList(List typeMirrors) { if (typeMirrors == null) { - return Collections.emptyList(); + return new ArrayList<>(); } return typeMirrors.stream() .map(this::transToClassName) diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AbstractMapperMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AbstractMapperMetadata.java index 1ef5515..b36a605 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AbstractMapperMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AbstractMapperMetadata.java @@ -2,6 +2,7 @@ package io.github.linpeilie.processor.metadata; import com.squareup.javapoet.ClassName; import io.github.linpeilie.processor.AutoMapperProperties; +import io.github.linpeilie.processor.utils.MapperUtils; import io.github.linpeilie.utils.StrUtil; public abstract class AbstractMapperMetadata { @@ -9,8 +10,7 @@ public abstract class AbstractMapperMetadata { protected ClassName sourceClassName; public String mapperPackage() { - return StrUtil.isNotEmpty(AutoMapperProperties.getMapperPackage()) - ? AutoMapperProperties.getMapperPackage() : sourceClassName.packageName(); + return MapperUtils.getMapperPackage(sourceClassName.packageName()); } public abstract String mapperName(); diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AdapterMethodMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AdapterMethodMetadata.java index 8cad3f1..6788406 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AdapterMethodMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AdapterMethodMetadata.java @@ -2,7 +2,6 @@ package io.github.linpeilie.processor.metadata; import com.squareup.javapoet.ClassName; import io.github.linpeilie.utils.ClassUtil; -import io.github.linpeilie.utils.MapperUtils; public class AdapterMethodMetadata extends AbstractAdapterMethodMetadata { diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoEnumMapperMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoEnumMapperMetadata.java index e602650..55e8df4 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoEnumMapperMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoEnumMapperMetadata.java @@ -1,7 +1,7 @@ package io.github.linpeilie.processor.metadata; -import com.squareup.javapoet.ClassName; import com.squareup.javapoet.TypeName; +import io.github.linpeilie.processor.utils.MapperUtils; public class AutoEnumMapperMetadata extends AbstractMapperMetadata { @@ -27,7 +27,7 @@ public class AutoEnumMapperMetadata extends AbstractMapperMetadata { @Override public String mapperName() { - return sourceClassName.simpleName() + "Mapper"; + return MapperUtils.getEnumMapperClassName(sourceClassName.simpleName()); } public String toEnumMethodName() { diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java index 56c669f..34c6532 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java @@ -1,7 +1,7 @@ package io.github.linpeilie.processor.metadata; import com.squareup.javapoet.ClassName; -import io.github.linpeilie.utils.MapperUtils; +import io.github.linpeilie.processor.utils.MapperUtils; import io.github.linpeilie.utils.StrUtil; import java.util.List; import org.mapstruct.NullValueMappingStrategy; @@ -23,6 +23,8 @@ public class AutoMapperMetadata extends AbstractMapperMetadata { private List usesClassNameList; + private List useEnumClassNameList; + private List importsClassNameList; private List fieldMappingList; @@ -107,6 +109,14 @@ public class AutoMapperMetadata extends AbstractMapperMetadata { return this; } + public List getUseEnumClassNameList() { + return useEnumClassNameList; + } + + public void setUseEnumClassNameList(List useEnumClassNameList) { + this.useEnumClassNameList = useEnumClassNameList; + } + public List getImportsClassNameList() { return importsClassNameList; } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/utils/MapperUtils.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/utils/MapperUtils.java similarity index 57% rename from mapstruct-plus/src/main/java/io/github/linpeilie/utils/MapperUtils.java rename to mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/utils/MapperUtils.java index d0d4be2..eaa9e4a 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/utils/MapperUtils.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/utils/MapperUtils.java @@ -1,4 +1,7 @@ -package io.github.linpeilie.utils; +package io.github.linpeilie.processor.utils; + +import io.github.linpeilie.processor.AutoMapperProperties; +import io.github.linpeilie.utils.StrUtil; public class MapperUtils { @@ -11,4 +14,14 @@ public class MapperUtils { return mapperClassName.substring(0, 1).toUpperCase() + mapperClassName.substring(1) + "Mapper"; } + public static String getEnumMapperClassName(String sourceSimpleName) { + return sourceSimpleName + "Mapper"; + } + + public static String getMapperPackage(String sourcePackage) { + return StrUtil.isNotEmpty(AutoMapperProperties.getMapperPackage()) + ? AutoMapperProperties.getMapperPackage() : sourcePackage; + + } + } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java index bafe7cc..6f0dec8 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java @@ -29,6 +29,11 @@ public @interface AutoMapper { Class[] uses() default {}; + /** + * 转换需要依赖的枚举,依赖的枚举,需要被 AutoEnumMapper 所注解 + */ + Class[] useEnums() default {}; + Class[] imports() default {}; /**