This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 256986
Collapse All | Expand All

(-)a/java.editor/src/org/netbeans/modules/editor/java/Utilities.java (-27 / +55 lines)
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) {

Return to bug 256986