3030
3131class LombokUtils {
3232
33- public static boolean isEffectivelyGetter (J .MethodDeclaration method ) {
34- boolean takesNoParameters = method .getParameters ().get (0 ) instanceof J .Empty ;
35- boolean singularReturn = method .getBody () != null //abstract methods can be null
36- && method .getBody ().getStatements ().size () == 1 &&
37- method .getBody ().getStatements ().get (0 ) instanceof J .Return ;
38-
39- if (takesNoParameters && singularReturn ) {
40- Expression returnExpression = ((J .Return ) method .getBody ().getStatements ().get (0 )).getExpression ();
41- //returns just an identifier
42- if (returnExpression instanceof J .Identifier ) {
43- J .Identifier identifier = (J .Identifier ) returnExpression ;
44- JavaType .Variable fieldType = identifier .getFieldType ();
45- return method .getType ().equals (fieldType .getType ());
46- }
33+ static boolean isEffectivelyGetter (J .MethodDeclaration method ) {
34+ // Check signature: no parameters
35+ if (!(method .getParameters ().get (0 ) instanceof J .Empty ) || method .getReturnTypeExpression () == null ) {
36+ return false ;
37+ }
38+ // Check body: just a return statement
39+ if (method .getBody () == null ||
40+ method .getBody ().getStatements ().size () != 1 ||
41+ !(method .getBody ().getStatements ().get (0 ) instanceof J .Return )) {
42+ return false ;
43+ }
44+ Expression returnExpression = ((J .Return ) method .getBody ().getStatements ().get (0 )).getExpression ();
45+ //returns just an identifier
46+ if (returnExpression instanceof J .Identifier ) {
47+ J .Identifier identifier = (J .Identifier ) returnExpression ;
48+ JavaType .Variable fieldType = identifier .getFieldType ();
49+ return method .getType ().equals (fieldType .getType ());
50+ } else if (returnExpression instanceof J .FieldAccess ) {
51+ J .FieldAccess fieldAccess = (J .FieldAccess ) returnExpression ;
52+ JavaType fieldType = fieldAccess .getType ();
53+ return method .getType ().equals (fieldType );
4754 }
4855 return false ;
4956 }
5057
51- public static String deriveGetterMethodName (JavaType .Variable fieldType ) {
52- String fieldName = fieldType .getName ();
53- if (fieldType .getType () == JavaType .Variable .Primitive .Boolean ) {
58+ static String deriveGetterMethodName (JavaType type , String fieldName ) {
59+ if (type == JavaType .Primitive .Boolean ) {
5460 boolean alreadyStartsWithIs = fieldName .length () >= 3 &&
5561 fieldName .substring (0 , 3 ).matches ("is[A-Z]" );
5662 if (alreadyStartsWithIs ) {
@@ -62,7 +68,7 @@ public static String deriveGetterMethodName(JavaType.Variable fieldType) {
6268 return "get" + StringUtils .capitalize (fieldName );
6369 }
6470
65- public static AccessLevel getAccessLevel (Collection <J .Modifier > modifiers ) {
71+ static AccessLevel getAccessLevel (Collection <J .Modifier > modifiers ) {
6672 Map <J .Modifier .Type , AccessLevel > map = ImmutableMap .<J .Modifier .Type , AccessLevel >builder ()
6773 .put (Public , PUBLIC )
6874 .put (Protected , PROTECTED )
0 commit comments