From e4037c7acdcefe6d5e540ba256f5f76593a225b0 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Sun, 26 Jan 2014 11:37:10 +0100 Subject: [PATCH] #109 Making Executables and Filters methods static --- .../ap/processor/MapperCreationProcessor.java | 42 +++++++++---------- .../processor/MethodRetrievalProcessor.java | 3 -- .../org/mapstruct/ap/util/Executables.java | 16 +++---- .../java/org/mapstruct/ap/util/Filters.java | 13 +++--- 4 files changed, 32 insertions(+), 42 deletions(-) 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 103bdcc14..9bfe56fa6 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -82,8 +82,6 @@ public class MapperCreationProcessor implements ModelElementProcessor sourceModel) { @@ -94,8 +92,6 @@ public class MapperCreationProcessor implements ModelElementProcessor methods, Method method, ExecutableElement targetAcessor, Parameter parameter) { - String targetPropertyName = executables.getPropertyName( targetAcessor ); + String targetPropertyName = Executables.getPropertyName( targetAcessor ); Mapping mapping = method.getMapping( targetPropertyName ); String dateFormat = mapping != null ? mapping.getDateFormat() : null; String sourcePropertyName = mapping != null ? mapping.getSourcePropertyName() : targetPropertyName; TypeElement parameterElement = parameter.getType().getTypeElement(); - List sourceGetters = filters.getterMethodsIn( + List sourceGetters = Filters.getterMethodsIn( elementUtils.getAllMembers( parameterElement ) ); @@ -249,7 +245,7 @@ public class MapperCreationProcessor implements ModelElementProcessor targetAccessors = filters.setterMethodsIn( + List targetAccessors = Filters.setterMethodsIn( elementUtils.getAllMembers( resultTypeElement ) ); targetAccessors.addAll( @@ -297,7 +293,7 @@ public class MapperCreationProcessor implements ModelElementProcessor targetProperties = executables.getPropertyNames( targetAccessors ); + Set targetProperties = Executables.getPropertyNames( targetAccessors ); reportErrorForUnmappedTargetPropertiesIfRequired( method, @@ -388,11 +384,11 @@ public class MapperCreationProcessor implements ModelElementProcessor getters = filters.getterMethodsIn( + List getters = Filters.getterMethodsIn( elementUtils.getAllMembers( parameterTypeElement ) ); - return executables.getPropertyNames( getters ).contains( propertyName ); + return Executables.getPropertyNames( getters ).contains( propertyName ); } private boolean reportErrorIfMappedPropertiesDontExist(Method method) { @@ -402,7 +398,7 @@ public class MapperCreationProcessor implements ModelElementProcessor targetAccessors = filters.setterMethodsIn( + List targetAccessors = Filters.setterMethodsIn( elementUtils.getAllMembers( resultTypeElement ) ); targetAccessors.addAll( @@ -410,7 +406,7 @@ public class MapperCreationProcessor implements ModelElementProcessor targetProperties = executables.getPropertyNames( targetAccessors ); + Set targetProperties = Executables.getPropertyNames( targetAccessors ); boolean foundUnmappedProperty = false; @@ -493,10 +489,10 @@ public class MapperCreationProcessor implements ModelElementProcessor alternativeTargetAccessorMethodsIn(Iterable elements) { - List setterMethods = filters.setterMethodsIn( elements ); - List getterMethods = filters.getterMethodsIn( elements ); + List setterMethods = Filters.setterMethodsIn( elements ); + List getterMethods = Filters.getterMethodsIn( elements ); List alternativeTargetAccessorsMethods = new LinkedList(); if ( getterMethods.size() > setterMethods.size() ) { @@ -809,9 +805,9 @@ public class MapperCreationProcessor implements ModelElementProcessor process(ProcessorContext context, TypeElement mapperTypeElement, Void sourceModel) { this.messager = context.getMessager(); this.typeFactory = context.getTypeFactory(); - this.executables = new Executables(); return retrieveMethods( mapperTypeElement, true ); } diff --git a/processor/src/main/java/org/mapstruct/ap/util/Executables.java b/processor/src/main/java/org/mapstruct/ap/util/Executables.java index 9975e06b4..50055dfbf 100644 --- a/processor/src/main/java/org/mapstruct/ap/util/Executables.java +++ b/processor/src/main/java/org/mapstruct/ap/util/Executables.java @@ -34,14 +34,14 @@ import javax.lang.model.type.TypeKind; */ public class Executables { - public Executables() { + private Executables() { } - public boolean isGetterMethod(ExecutableElement method) { + public static boolean isGetterMethod(ExecutableElement method) { return isPublic( method ) && ( isNonBooleanGetterMethod( method ) || isBooleanGetterMethod( method ) ); } - private boolean isNonBooleanGetterMethod(ExecutableElement method) { + private static boolean isNonBooleanGetterMethod(ExecutableElement method) { String name = method.getSimpleName().toString(); return method.getParameters().isEmpty() && @@ -50,7 +50,7 @@ public class Executables { method.getReturnType().getKind() != TypeKind.VOID; } - private boolean isBooleanGetterMethod(ExecutableElement method) { + private static boolean isBooleanGetterMethod(ExecutableElement method) { String name = method.getSimpleName().toString(); return method.getParameters().isEmpty() && @@ -59,7 +59,7 @@ public class Executables { method.getReturnType().getKind() == TypeKind.BOOLEAN; } - public boolean isSetterMethod(ExecutableElement method) { + public static boolean isSetterMethod(ExecutableElement method) { String name = method.getSimpleName().toString(); if ( isPublic( method ) && name.startsWith( "set" ) && name.length() > 3 && method.getParameters() @@ -70,11 +70,11 @@ public class Executables { return false; } - private boolean isPublic(ExecutableElement method) { + private static boolean isPublic(ExecutableElement method) { return method.getModifiers().contains( Modifier.PUBLIC ); } - public String getPropertyName(ExecutableElement getterOrSetterMethod) { + public static String getPropertyName(ExecutableElement getterOrSetterMethod) { if ( isNonBooleanGetterMethod( getterOrSetterMethod ) ) { return Introspector.decapitalize( getterOrSetterMethod.getSimpleName().toString().substring( 3 ) @@ -94,7 +94,7 @@ public class Executables { throw new IllegalArgumentException( "Executable " + getterOrSetterMethod + " is not getter or setter method." ); } - public Set getPropertyNames(List propertyAccessors) { + public static Set getPropertyNames(List propertyAccessors) { Set propertyNames = new HashSet(); for ( ExecutableElement executableElement : propertyAccessors ) { diff --git a/processor/src/main/java/org/mapstruct/ap/util/Filters.java b/processor/src/main/java/org/mapstruct/ap/util/Filters.java index 1121ab586..93a49178e 100644 --- a/processor/src/main/java/org/mapstruct/ap/util/Filters.java +++ b/processor/src/main/java/org/mapstruct/ap/util/Filters.java @@ -33,17 +33,14 @@ import javax.lang.model.element.ExecutableElement; */ public class Filters { - private final Executables executables; - - public Filters(Executables executables) { - this.executables = executables; + private Filters() { } - public List getterMethodsIn(Iterable elements) { + public static List getterMethodsIn(Iterable elements) { List getterMethods = new LinkedList(); for ( ExecutableElement method : methodsIn( elements ) ) { - if ( executables.isGetterMethod( method ) ) { + if ( Executables.isGetterMethod( method ) ) { getterMethods.add( method ); } } @@ -51,11 +48,11 @@ public class Filters { return getterMethods; } - public List setterMethodsIn(Iterable elements) { + public static List setterMethodsIn(Iterable elements) { List setterMethods = new LinkedList(); for ( ExecutableElement method : methodsIn( elements ) ) { - if ( executables.isSetterMethod( method ) ) { + if ( Executables.isSetterMethod( method ) ) { setterMethods.add( method ); } }