Lines 690-713
Link Here
|
690 |
return false; |
690 |
return false; |
691 |
} |
691 |
} |
692 |
|
692 |
|
693 |
private static String varNameForPath(TreePath path) { |
693 |
private static Pair<String, Tree> varNameForPath(TreePath path) { |
694 |
if (path == null) |
694 |
if (path == null) |
695 |
return null; |
695 |
return null; |
696 |
Tree tree = path.getLeaf(); |
696 |
Tree tree = path.getLeaf(); |
697 |
if (tree.getKind() == Kind.VARIABLE) { |
697 |
if (tree.getKind() == Kind.VARIABLE) { |
698 |
if (((VariableTree)tree).getInitializer() != null) { |
698 |
if (((VariableTree)tree).getInitializer() != null) { |
699 |
String name = varNameForTree(((VariableTree)tree).getInitializer()); |
699 |
Pair<String, Tree> name = varNameForTree(((VariableTree)tree).getInitializer()); |
700 |
if (name != null) { |
700 |
if (name != null) { |
701 |
return name; |
701 |
return name; |
702 |
} |
702 |
} |
703 |
} |
703 |
} |
704 |
if (path.getParentPath().getLeaf().getKind() == Kind.ENHANCED_FOR_LOOP |
704 |
if (path.getParentPath().getLeaf().getKind() == Kind.ENHANCED_FOR_LOOP |
705 |
&& ((EnhancedForLoopTree)path.getParentPath().getLeaf()).getVariable() == tree) { |
705 |
&& ((EnhancedForLoopTree)path.getParentPath().getLeaf()).getVariable() == tree) { |
706 |
String name = varNameForTree(((EnhancedForLoopTree)path.getParentPath().getLeaf()).getExpression()); |
706 |
Pair<String, Tree> name = varNameForTree(((EnhancedForLoopTree)path.getParentPath().getLeaf()).getExpression()); |
707 |
if (name != null) { |
707 |
if (name != null) { |
708 |
String singular = getSingular(name); |
708 |
String singular = getSingular(name.first()); |
709 |
if (singular != null) { |
709 |
if (singular != null) { |
710 |
return singular; |
710 |
return Pair.of(singular, name.second()); |
711 |
} |
711 |
} |
712 |
} |
712 |
} |
713 |
} |
713 |
} |
Lines 715-753
Link Here
|
715 |
} |
715 |
} |
716 |
return varNameForTree(path.getLeaf()); |
716 |
return varNameForTree(path.getLeaf()); |
717 |
} |
717 |
} |
|
|
718 |
|
719 |
private static Pair<String, Tree> firstToLower(Pair<String, Tree> p) { |
720 |
return Pair.of(firstToLower(p.first()), p.second()); |
721 |
} |
718 |
|
722 |
|
719 |
private static String varNameForTree(Tree et) { |
723 |
private static Pair<String, Tree> varNameForTree(Tree et) { |
720 |
if (et == null) |
724 |
if (et == null) |
721 |
return null; |
725 |
return null; |
722 |
switch (et.getKind()) { |
726 |
switch (et.getKind()) { |
723 |
case IDENTIFIER: |
727 |
case IDENTIFIER: |
724 |
return ((IdentifierTree) et).getName().toString(); |
728 |
return Pair.of(((IdentifierTree) et).getName().toString(), et); |
725 |
case MEMBER_SELECT: |
729 |
case MEMBER_SELECT: |
726 |
return ((MemberSelectTree) et).getIdentifier().toString(); |
730 |
return Pair.of(((MemberSelectTree) et).getIdentifier().toString(), et); |
727 |
case METHOD_INVOCATION: |
731 |
case METHOD_INVOCATION: { |
728 |
return varNameForTree(((MethodInvocationTree) et).getMethodSelect()); |
732 |
MethodInvocationTree mit = (MethodInvocationTree)et; |
|
|
733 |
return mit.getMethodSelect() != null && mit.getMethodSelect().getKind() == Kind.IDENTIFIER ? |
734 |
Pair.of(varNameForTree(((MethodInvocationTree) et).getMethodSelect()).first(), et) : |
735 |
varNameForTree(((MethodInvocationTree) et).getMethodSelect()); |
736 |
} |
729 |
case NEW_CLASS: |
737 |
case NEW_CLASS: |
730 |
return firstToLower(varNameForTree(((NewClassTree) et).getIdentifier())); |
738 |
return Pair.of(firstToLower(varNameForTree(((NewClassTree) et).getIdentifier())).first(), |
731 |
case PARAMETERIZED_TYPE: |
739 |
et); |
732 |
return firstToLower(varNameForTree(((ParameterizedTypeTree) et).getType())); |
740 |
case PARAMETERIZED_TYPE: |
|
|
741 |
return Pair.of(firstToLower(varNameForTree(((ParameterizedTypeTree) et).getType()).first()), |
742 |
et); |
733 |
case STRING_LITERAL: |
743 |
case STRING_LITERAL: |
734 |
String name = guessLiteralName((String) ((LiteralTree) et).getValue()); |
744 |
String name = guessLiteralName((String) ((LiteralTree) et).getValue()); |
735 |
if (name == null) { |
745 |
if (name == null) { |
736 |
return firstToLower(String.class.getSimpleName()); |
746 |
return Pair.of(firstToLower(String.class.getSimpleName()), et); |
737 |
} else { |
747 |
} else { |
738 |
return firstToLower(name); |
748 |
return Pair.of(firstToLower(name), et); |
739 |
} |
749 |
} |
740 |
case VARIABLE: |
750 |
case VARIABLE: |
741 |
return ((VariableTree) et).getName().toString(); |
751 |
return Pair.of(((VariableTree) et).getName().toString(), et); |
742 |
case ARRAY_ACCESS: |
752 |
case ARRAY_ACCESS: { |
743 |
name = varNameForTree(((ArrayAccessTree)et).getExpression()); |
753 |
Pair<String, Tree> r = varNameForTree(((ArrayAccessTree)et).getExpression()); |
744 |
if (name != null) { |
754 |
if (r != null) { |
745 |
String singular = getSingular(name); |
755 |
String singular = getSingular(r.first()); |
746 |
if (singular != null) { |
756 |
if (singular != null) { |
747 |
return singular; |
757 |
return Pair.of(singular, r.second()); |
748 |
} |
758 |
} |
749 |
} |
759 |
} |
750 |
return null; |
760 |
return null; |
|
|
761 |
} |
751 |
case ASSIGNMENT: |
762 |
case ASSIGNMENT: |
752 |
if (((AssignmentTree)et).getExpression() != null) { |
763 |
if (((AssignmentTree)et).getExpression() != null) { |
753 |
return varNameForTree(((AssignmentTree)et).getExpression()); |
764 |
return varNameForTree(((AssignmentTree)et).getExpression()); |
Lines 768-785
Link Here
|
768 |
return null; |
779 |
return null; |
769 |
} |
780 |
} |
770 |
|
781 |
|
|
|
782 |
/** |
783 |
* May need proper context to adjust the name. Please use the newer variant. |
784 |
* @deprecated use {@link #adjustName(java.lang.String, com.sun.source.tree.Tree) |
785 |
*/ |
786 |
@Deprecated |
771 |
static String adjustName(String name) { |
787 |
static String adjustName(String name) { |
|
|
788 |
return adjustName(name, null); |
789 |
} |
790 |
|
791 |
private static String adjustName(Pair<String, Tree> name) { |
792 |
return adjustName(name.first(), name.second()); |
793 |
} |
794 |
|
795 |
static String adjustName(String name, Tree context) { |
772 |
if (name == null || ERROR.contentEquals(name)) |
796 |
if (name == null || ERROR.contentEquals(name)) |
773 |
return null; |
797 |
return null; |
774 |
|
798 |
|
775 |
String shortName = null; |
799 |
String shortName = null; |
776 |
|
800 |
|
777 |
if (name.startsWith("get") && name.length() > 3) { |
801 |
if (context == null || |
778 |
shortName = name.substring(3); |
802 |
context.getKind() == Tree.Kind.METHOD_INVOCATION || |
779 |
} |
803 |
context.getKind() == Tree.Kind.MEMBER_SELECT) { |
780 |
|
804 |
if (name.startsWith("get") && name.length() > 3) { |
781 |
if (name.startsWith("is") && name.length() > 2) { |
805 |
shortName = name.substring(3); |
782 |
shortName = name.substring(2); |
806 |
} |
|
|
807 |
|
808 |
if (name.startsWith("is") && name.length() > 2) { |
809 |
shortName = name.substring(2); |
810 |
} |
783 |
} |
811 |
} |
784 |
|
812 |
|
785 |
if (shortName != null) { |
813 |
if (shortName != null) { |