From 06b4220af87e2fb6c99108ac851f993b7ab5899e Mon Sep 17 00:00:00 2001 From: sjaakd Date: Tue, 18 Feb 2014 21:38:57 +0100 Subject: [PATCH] #120 Renaming Method to SourceMethod --- .../mapstruct/ap/model/BeanMappingMethod.java | 6 +- .../ap/model/IterableMappingMethod.java | 4 +- .../mapstruct/ap/model/MapMappingMethod.java | 4 +- .../mapstruct/ap/model/MethodReference.java | 4 +- .../ap/model/source/MethodMatcher.java | 16 ++--- .../source/{Method.java => SourceMethod.java} | 41 +++++++---- .../ap/processor/MapperCreationProcessor.java | 68 +++++++++++-------- .../processor/MethodRetrievalProcessor.java | 24 ++++--- 8 files changed, 95 insertions(+), 72 deletions(-) rename processor/src/main/java/org/mapstruct/ap/model/source/{Method.java => SourceMethod.java} (84%) diff --git a/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java index 5accee876..05b59d766 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java @@ -26,7 +26,7 @@ import java.util.Set; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; -import org.mapstruct.ap.model.source.Method; +import org.mapstruct.ap.model.source.SourceMethod; /** * A {@link MappingMethod} implemented by a {@link Mapper} class which maps one @@ -40,7 +40,9 @@ public class BeanMappingMethod extends MappingMethod { private final List propertyMappings; private final MethodReference factoryMethod; - public BeanMappingMethod(Method method, List propertyMappings, MethodReference factoryMethod) { + public BeanMappingMethod(SourceMethod method, + List propertyMappings, + MethodReference factoryMethod) { super( method ); this.propertyMappings = propertyMappings; this.factoryMethod = factoryMethod; diff --git a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java index e94ef2754..92ac7721a 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java @@ -22,7 +22,7 @@ import java.util.Set; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; -import org.mapstruct.ap.model.source.Method; +import org.mapstruct.ap.model.source.SourceMethod; import org.mapstruct.ap.util.Strings; /** @@ -37,7 +37,7 @@ public class IterableMappingMethod extends MappingMethod { private final TypeConversion conversion; private final MethodReference factoryMethod; - public IterableMappingMethod(Method method, MethodReference elementMappingMethod, + public IterableMappingMethod(SourceMethod method, MethodReference elementMappingMethod, TypeConversion conversion, MethodReference factoryMethod) { super( method ); this.elementMappingMethod = elementMappingMethod; diff --git a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java index 59f825df6..aa9e4c16b 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java @@ -22,7 +22,7 @@ import java.util.Set; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; -import org.mapstruct.ap.model.source.Method; +import org.mapstruct.ap.model.source.SourceMethod; import org.mapstruct.ap.util.Strings; /** @@ -39,7 +39,7 @@ public class MapMappingMethod extends MappingMethod { private final TypeConversion valueConversion; private final MethodReference factoryMethod; - public MapMappingMethod(Method method, MethodReference keyMappingMethod, TypeConversion keyConversion, + public MapMappingMethod(SourceMethod method, MethodReference keyMappingMethod, TypeConversion keyConversion, MethodReference valueMappingMethod, TypeConversion valueConversion, MethodReference factoryMethod) { super( method ); diff --git a/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java b/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java index 90550fefe..303f52e02 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java +++ b/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java @@ -24,7 +24,7 @@ import java.util.Set; import org.mapstruct.ap.model.common.ConversionContext; import org.mapstruct.ap.model.common.Type; -import org.mapstruct.ap.model.source.Method; +import org.mapstruct.ap.model.source.SourceMethod; /** * Represents a reference to {@link MappingMethod}. @@ -37,7 +37,7 @@ public class MethodReference extends MappingMethod { private final String contextParam; - public MethodReference(Method method, MapperReference declaringMapper ) { + public MethodReference(SourceMethod method, MapperReference declaringMapper ) { super( method ); this.declaringMapper = declaringMapper; this.contextParam = null; diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/MethodMatcher.java b/processor/src/main/java/org/mapstruct/ap/model/source/MethodMatcher.java index 6baeaa547..222396817 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/MethodMatcher.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/MethodMatcher.java @@ -37,14 +37,14 @@ import javax.lang.model.util.Types; import org.mapstruct.ap.model.common.Type; /** - * MethodMatcher $8.4 of the JavaLanguage specification describes a method body as such: + * SourceMethodMatcher $8.4 of the JavaLanguage specification describes a method body as such: * *
- * MethodDeclaration: MethodHeader MethodBody
- * MethodHeader: MethodModifiers TypeParameters Result MethodDeclarator Throws
- * MethodDeclarator: Identifier ( FormalParameterList )
- *
- * example <T extends String & Serializable>  T   getResult(? extends T) throws Exception
+ SourceMethodDeclaration: SourceMethodHeader SourceMethodBody
+ SourceMethodHeader: SourceMethodModifiers TypeParameters Result SourceMethodDeclarator Throws
+ SourceMethodDeclarator: Identifier ( FormalParameterList )
+
+ example <T extends String & Serializable>  T   getResult(? extends T) throws Exception
  *         \-------------------------------/ \-/            \---------/
  *               TypeParameters             Result        ParameterList
  * 
@@ -62,7 +62,7 @@ import org.mapstruct.ap.model.common.Type; public class MethodMatcher { - private final Method candidateMethod; + private final SourceMethod candidateMethod; private final Types typeUtils; private final Map genericTypesMap = new HashMap(); @@ -72,7 +72,7 @@ public class MethodMatcher { * @param typeUtils * @param candidateMethod */ - MethodMatcher(Types typeUtils, Method candidateMethod) { + MethodMatcher(Types typeUtils, SourceMethod candidateMethod) { this.typeUtils = typeUtils; this.candidateMethod = candidateMethod; } diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/Method.java b/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java similarity index 84% rename from processor/src/main/java/org/mapstruct/ap/model/source/Method.java rename to processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java index 1f0561d00..1a29ef602 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/Method.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/SourceMethod.java @@ -42,7 +42,7 @@ import org.mapstruct.ap.util.Strings; * * @author Gunnar Morling */ -public class Method implements BasicMethod { +public class SourceMethod implements BasicMethod { private final Type declaringMapper; private final ExecutableElement executable; @@ -58,12 +58,15 @@ public class Method implements BasicMethod { private boolean configuredByReverseMappingMethod = false; - public static Method forMethodRequiringImplementation(ExecutableElement executable, List parameters, - Type returnType, Map> mappings, - IterableMapping iterableMapping, MapMapping mapMapping, - Types typeUtils ) { + public static SourceMethod forMethodRequiringImplementation(ExecutableElement executable, + List parameters, + Type returnType, Map> mappings, + IterableMapping iterableMapping, + MapMapping mapMapping, + Types typeUtils ) { - return new Method( + return new SourceMethod( null, executable, parameters, @@ -74,10 +77,13 @@ public class Method implements BasicMethod { typeUtils ); } - public static Method forReferencedMethod(Type declaringMapper, ExecutableElement executable, - List parameters, Type returnType, Types typeUtils ) { + public static SourceMethod forReferencedMethod(Type declaringMapper, + ExecutableElement executable, + List parameters, + Type returnType, + Types typeUtils ) { - return new Method( + return new SourceMethod( declaringMapper, executable, parameters, @@ -89,10 +95,10 @@ public class Method implements BasicMethod { ); } - public static Method forFactoryMethod(Type declaringMapper, ExecutableElement executable, + public static SourceMethod forFactoryMethod(Type declaringMapper, ExecutableElement executable, Type returnType, Types typeUtils) { - return new Method( + return new SourceMethod( declaringMapper, executable, Collections.emptyList(), @@ -104,9 +110,14 @@ public class Method implements BasicMethod { ); } - private Method(Type declaringMapper, ExecutableElement executable, List parameters, Type returnType, - Map> mappings, IterableMapping iterableMapping, MapMapping mapMapping, - Types typeUtils ) { + private SourceMethod(Type declaringMapper, + ExecutableElement executable, + List parameters, + Type returnType, + Map> mappings, + IterableMapping iterableMapping, + MapMapping mapMapping, + Types typeUtils ) { this.declaringMapper = declaringMapper; this.executable = executable; this.parameters = parameters; @@ -229,7 +240,7 @@ public class Method implements BasicMethod { this.configuredByReverseMappingMethod = true; } - public boolean reverses(Method method) { + public boolean reverses(SourceMethod method) { return getSourceParameters().size() == 1 && method.getSourceParameters().size() == 1 && equals( getSourceParameters().iterator().next().getType(), method.getResultType() ) && equals( getResultType(), method.getSourceParameters().iterator().next().getType() ); diff --git a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java index 2273930ab..1ae05aca3 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -58,7 +58,7 @@ import org.mapstruct.ap.model.common.Type; import org.mapstruct.ap.model.common.TypeFactory; import org.mapstruct.ap.model.source.BasicMethod; import org.mapstruct.ap.model.source.Mapping; -import org.mapstruct.ap.model.source.Method; +import org.mapstruct.ap.model.source.SourceMethod; import org.mapstruct.ap.option.Options; import org.mapstruct.ap.option.ReportingPolicy; import org.mapstruct.ap.prism.MapperPrism; @@ -68,11 +68,11 @@ import org.mapstruct.ap.util.Strings; /** * A {@link ModelElementProcessor} which creates a {@link Mapper} from the given - * list of {@link Method}s. + * list of {@link SourceMethod}s. * * @author Gunnar Morling */ -public class MapperCreationProcessor implements ModelElementProcessor, Mapper> { +public class MapperCreationProcessor implements ModelElementProcessor, Mapper> { private Elements elementUtils; private Types typeUtils; @@ -85,7 +85,7 @@ public class MapperCreationProcessor implements ModelElementProcessor usedBuiltInMethods; @Override - public Mapper process(ProcessorContext context, TypeElement mapperTypeElement, List sourceModel) { + public Mapper process(ProcessorContext context, TypeElement mapperTypeElement, List sourceModel) { this.elementUtils = context.getElementUtils(); this.typeUtils = context.getTypeUtils(); this.messager = context.getMessager(); @@ -105,7 +105,7 @@ public class MapperCreationProcessor implements ModelElementProcessor methods) { + private Mapper getMapper(TypeElement element, List methods) { ReportingPolicy unmappedTargetPolicy = getEffectiveUnmappedTargetPolicy( element ); List mapperReferences = getReferencedMappers( element ); List mappingMethods = getMappingMethods( mapperReferences, methods, unmappedTargetPolicy ); @@ -170,17 +170,17 @@ public class MapperCreationProcessor implements ModelElementProcessor getMappingMethods(List mapperReferences, List methods, + private List getMappingMethods(List mapperReferences, List methods, ReportingPolicy unmappedTargetPolicy) { List mappingMethods = new ArrayList(); - for ( Method method : methods ) { + for ( SourceMethod method : methods ) { if ( !method.requiresImplementation() ) { continue; } - Method reverseMappingMethod = getReverseMappingMethod( methods, method ); + SourceMethod reverseMappingMethod = getReverseMappingMethod( methods, method ); boolean hasFactoryMethod = false; if ( method.isIterableMapping() ) { @@ -230,10 +230,10 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, + private MethodReference getFactoryMethod(List mapperReferences, List methods, Type returnType) { MethodReference result = null; - for ( Method method : methods ) { + for ( SourceMethod method : methods ) { if ( !method.requiresImplementation() && !method.isIterableMapping() && !method.isMapMapping() && method.getMappings().isEmpty() && method.getParameters().isEmpty() ) { if ( method.getReturnType().equals( returnType ) ) { @@ -265,7 +265,7 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, - Method method, ExecutableElement targetAcessor, Parameter parameter) { + private PropertyMapping getPropertyMapping(List mapperReferences, + List methods, + SourceMethod method, + ExecutableElement targetAcessor, + Parameter parameter) { String targetPropertyName = Executables.getPropertyName( targetAcessor ); Mapping mapping = method.getMapping( targetPropertyName ); String dateFormat = mapping != null ? mapping.getDateFormat() : null; @@ -341,8 +344,8 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, - Method method, ReportingPolicy unmappedTargetPolicy) { + private BeanMappingMethod getBeanMappingMethod(List mapperReferences, List methods, + SourceMethod method, ReportingPolicy unmappedTargetPolicy) { List propertyMappings = new ArrayList(); Set mappedTargetProperties = new HashSet(); @@ -413,7 +416,7 @@ public class MapperCreationProcessor implements ModelElementProcessor targetProperties, Set mappedTargetProperties) { @@ -433,8 +436,8 @@ public class MapperCreationProcessor implements ModelElementProcessor rawMethods, Method method) { - for ( Method oneMethod : rawMethods ) { + private SourceMethod getReverseMappingMethod(List rawMethods, SourceMethod method) { + for ( SourceMethod oneMethod : rawMethods ) { if ( oneMethod.reverses( method ) ) { return oneMethod; } @@ -442,7 +445,7 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, - Method method, Parameter parameter, ExecutableElement sourceAccessor, - ExecutableElement targetAcessor, String dateFormat) { + private PropertyMapping getPropertyMapping(List mapperReferences, + List methods, + SourceMethod method, + Parameter parameter, + ExecutableElement sourceAccessor, + ExecutableElement targetAcessor, + String dateFormat) { Type sourceType = typeFactory.getReturnType( sourceAccessor ); Type targetType = null; String conversionString = null; @@ -607,8 +614,9 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, - Method method) { + private IterableMappingMethod getIterableMappingMethod(List mapperReferences, + List methods, + SourceMethod method) { Type sourceElementType = method.getSourceParameters().iterator().next().getType().getTypeParameters().get( 0 ); Type targetElementType = method.getResultType().getTypeParameters().get( 0 ); String dateFormat = method.getIterableMapping() != null ? method.getIterableMapping().getDateFormat() : null; @@ -659,8 +667,8 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, List methods, - Method method) { + private MapMappingMethod getMapMappingMethod(List mapperReferences, List methods, + SourceMethod method) { List sourceTypeParams = method.getSourceParameters().iterator().next().getType().getTypeParameters(); Type sourceKeyType = sourceTypeParams.get( 0 ); Type sourceValueType = sourceTypeParams.get( 1 ); @@ -752,7 +760,7 @@ public class MapperCreationProcessor implements ModelElementProcessor T getBestMatch(Method mappingMethod, String mappedElement, + private T getBestMatch(SourceMethod mappingMethod, String mappedElement, Iterable methods, Type parameterType, Type returnType) { List candidatesWithMathingTargetType = new ArrayList(); @@ -820,7 +828,7 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences ) { + private MethodReference getMappingMethodReference( SourceMethod method, List mapperReferences ) { if ( method != null ) { MapperReference mapperReference = null; for ( MapperReference ref : mapperReferences ) { @@ -857,7 +865,7 @@ public class MapperCreationProcessor implements ModelElementProcessor> { +public class MethodRetrievalProcessor implements ModelElementProcessor> { private Messager messager; private TypeFactory typeFactory; private Types typeUtils; @Override - public List process(ProcessorContext context, TypeElement mapperTypeElement, Void sourceModel) { + public List process(ProcessorContext context, TypeElement mapperTypeElement, Void sourceModel) { this.messager = context.getMessager(); this.typeFactory = context.getTypeFactory(); this.typeUtils = context.getTypeUtils(); @@ -85,11 +85,11 @@ public class MethodRetrievalProcessor implements ModelElementProcessor retrieveMethods(TypeElement element, boolean mapperRequiresImplementation) { - List methods = new ArrayList(); + private List retrieveMethods(TypeElement element, boolean mapperRequiresImplementation) { + List methods = new ArrayList(); for ( ExecutableElement executable : methodsIn( element.getEnclosedElements() ) ) { - Method method = getMethod( element, executable, mapperRequiresImplementation ); + SourceMethod method = getMethod( element, executable, mapperRequiresImplementation ); if ( method != null ) { methods.add( method ); } @@ -117,7 +117,9 @@ public class MethodRetrievalProcessor implements ModelElementProcessor parameters = typeFactory.getParameters( method ); Type returnType = typeFactory.getReturnType( method ); @@ -134,7 +136,7 @@ public class MethodRetrievalProcessor implements ModelElementProcessor