This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 6408fe1 [NETBEANS-4681] Fixed issue : refactor record rename & move record file to other package 6408fe1 is described below commit 6408fe154baceaafc437f99f1fd4dcbaccf99479 Author: Akhilesh Singh <akhilesh.s.si...@oracle.com> AuthorDate: Thu Aug 13 13:52:10 2020 +0530 [NETBEANS-4681] Fixed issue : refactor record rename & move record file to other package --- .../netbeans/api/java/source/TreePathHandle.java | 5 +- .../netbeans/api/java/source/TreeUtilities.java | 10 +++- .../modules/refactoring/java/ui/MoveClassUI.java | 8 +++- .../modules/refactoring/java/ui/UIUtilities.java | 12 ++++- .../refactoring/java/test/MoveJavaFileTest.java | 10 ++++ .../modules/refactoring/java/test/RenameTest.java | 55 ++++++++++++++++++++++ 6 files changed, 93 insertions(+), 7 deletions(-) diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreePathHandle.java b/java/java.source.base/src/org/netbeans/api/java/source/TreePathHandle.java index 5bd8a80..6ce4e4d 100644 --- a/java/java.source.base/src/org/netbeans/api/java/source/TreePathHandle.java +++ b/java/java.source.base/src/org/netbeans/api/java/source/TreePathHandle.java @@ -51,6 +51,7 @@ import javax.tools.JavaFileObject; import org.netbeans.api.annotations.common.CheckForNull; import org.netbeans.api.annotations.common.NonNull; import org.netbeans.modules.java.source.PositionRefProvider; +import org.netbeans.modules.java.source.TreeShims; import org.netbeans.modules.java.source.parsing.FileObjects; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileStateInvalidException; @@ -322,7 +323,7 @@ public final class TreePathHandle { case ENUM_CONSTANT: return true; default: - return false; + return (el.getKind().name().equals(TreeShims.RECORD)); } } @@ -858,4 +859,4 @@ public final class TreePathHandle { return result; } -} +} \ No newline at end of file diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java index dc13204..944f641 100644 --- a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java +++ b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java @@ -103,6 +103,7 @@ import org.netbeans.lib.nbjavac.services.NBAttr; import org.netbeans.lib.nbjavac.services.NBParserFactory; import org.netbeans.lib.nbjavac.services.NBResolve; import org.netbeans.lib.nbjavac.services.NBTreeMaker.IndexedClassDecl; +import org.netbeans.modules.java.source.TreeShims; import org.netbeans.modules.java.source.TreeUtilitiesAccessor; import org.netbeans.modules.java.source.builder.CommentHandlerService; import org.netbeans.modules.java.source.builder.CommentSetImpl; @@ -124,7 +125,14 @@ public final class TreeUtilities { * @since 0.67 */ public static final Set<Kind> CLASS_TREE_KINDS = EnumSet.of(Kind.ANNOTATION_TYPE, Kind.CLASS, Kind.ENUM, Kind.INTERFACE); - + static { + Kind recKind = null; + try { + recKind = Kind.valueOf(TreeShims.RECORD); + CLASS_TREE_KINDS.add(recKind); + } catch (IllegalArgumentException ex) { + } + } private final CompilationInfo info; private final CommentHandlerService handler; diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/MoveClassUI.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/MoveClassUI.java index 2472575..9176f43 100644 --- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/MoveClassUI.java +++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/MoveClassUI.java @@ -305,7 +305,11 @@ public class MoveClassUI implements RefactoringUI, RefactoringUIBypass { Collection<TreePathHandle> tphs = new ArrayList<TreePathHandle>(); SourcePositions sourcePositions = info.getTrees().getSourcePositions(); for (Element ele : e.getEnclosedElements()) { - Tree leaf = info.getTrees().getPath(ele).getLeaf(); + TreePath path = info.getTrees().getPath(ele); + if (path == null) { + continue; + } + Tree leaf = path.getLeaf(); long start = sourcePositions.getStartPosition(info.getCompilationUnit(), leaf); long end = sourcePositions.getEndPosition(info.getCompilationUnit(), leaf); if ((start >= startOffset && start <= endOffset) @@ -364,4 +368,4 @@ public class MoveClassUI implements RefactoringUI, RefactoringUIBypass { // } } } -} +} \ No newline at end of file diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/UIUtilities.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/UIUtilities.java index ac259e3..acd9ff4 100644 --- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/UIUtilities.java +++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/ui/UIUtilities.java @@ -57,6 +57,7 @@ public final class UIUtilities { // XXX: Remove "test_" when #211651 is fixed private static final String TEST_JAVA_MIME_TYPE = "test_text/x-java"; // NOI18N + private static final String RECORD = "RECORD"; // NOI18N /** * Element.Kind values allowed to be used when calling ElementHandle.create * @@ -64,7 +65,14 @@ public final class UIUtilities { * @see org.netbeans.api.java.source.ElementHandle */ public static EnumSet allowedElementKinds = EnumSet.of(ElementKind.PACKAGE, ElementKind.CLASS, ElementKind.INTERFACE, ElementKind.ENUM, ElementKind.ANNOTATION_TYPE, ElementKind.METHOD, ElementKind.CONSTRUCTOR, ElementKind.INSTANCE_INIT, ElementKind.STATIC_INIT, ElementKind.FIELD, ElementKind.ENUM_CONSTANT, ElementKind.TYPE_PARAMETER); - + static { + ElementKind recKind = null; + try { + recKind = ElementKind.valueOf(RECORD); + allowedElementKinds.add(recKind); + } catch (IllegalArgumentException ex) { + } + } // not to be instantiated private UIUtilities() { } @@ -1270,4 +1278,4 @@ public final class UIUtilities { return UIUtilities.escape(tm.toString()); } } -} +} \ No newline at end of file diff --git a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/MoveJavaFileTest.java b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/MoveJavaFileTest.java index 36398f8..2792c3a 100644 --- a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/MoveJavaFileTest.java +++ b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/MoveJavaFileTest.java @@ -328,6 +328,16 @@ public class MoveJavaFileTest extends RefactoringTestBase { new File("movepkgdst/package-info.java", "package movepkgdst;"), new File("movepkg/MoveClass.java", "package movepkg; import movepkg.*; public class MoveClass { public MoveClass() { } }")); } + + public void testMoveRecord() throws Exception { + writeFilesAndWaitForScan(src, + new File("movepkgdst/package-info.java", "package movepkgdst;"), + new File("movepkg/MoveRecord.java", "package movepkg; public record MoveRecord() { }")); + performMoveClass(Lookups.singleton(src.getFileObject("movepkg/MoveRecord.java")), new URL(src.getURL(), "movepkgdst/")); + verifyContent(src, + new File("movepkgdst/package-info.java", "package movepkgdst;"), + new File("movepkgdst/MoveRecord.java", "package movepkgdst; public record MoveRecord() { }")); + } private void performMoveClass(Lookup source, URL target, Problem... expectedProblems) throws Exception { final MoveRefactoring[] r = new MoveRefactoring[1]; diff --git a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenameTest.java b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenameTest.java index 85b590c..0f2686f 100644 --- a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenameTest.java +++ b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenameTest.java @@ -1427,6 +1427,61 @@ public class RenameTest extends RefactoringTestBase { + " }\n" + "}")); } + + public void testJavadocRecord() throws Exception { + writeFilesAndWaitForScan(src, + new File("p2/C.java", "package p2;\n" + + "public record C() {\n" + + "}"), + new File("p2/A.java", "package p2;\n" + + "/**\n" + + " * @see C\n" + + " */\n" + + "public class A {\n" + + " private C b;\n" + + "}")); + performRename(src.getFileObject("p2/C.java"), -1, -1, "B", null, false); + verifyContent(src, + new File("p2/C.java", "package p2;\n" + + "public record B() {\n" + + "}"), + new File("p2/A.java", "package p2;\n" + + "/**\n" + + " * @see B\n" + + " */\n" + + "public class A {\n" + + " private B b;\n" + + "}")); + } + + public void testRenameRecordPropa() throws Exception { + writeFilesAndWaitForScan(src, + new File("t/A.java", "package t;\n" + + "public record A() {\n" + + " private static int property;\n" + + " public static int getProperty() {\n" + + " return property;\n" + + " }\n" + + " public int foo() {\n" + + " return property;\n" + + " }\n" + + "}")); + JavaRenameProperties props = new JavaRenameProperties(); + props.setIsRenameGettersSetters(true); + performRename(src.getFileObject("t/A.java"), 1, -1, "renamed", props, true); + verifyContent(src, + new File("t/A.java", "package t;\n" + + "public record A() {\n" + + " private static int renamed;\n" + + " public static int getRenamed() {\n" + + " return renamed;\n" + + " }\n" + + " public int foo() {\n" + + " return renamed;\n" + + " }\n" + + "}")); + + } private void performRename(FileObject source, final int position, final int position2, final String newname, final JavaRenameProperties props, final boolean searchInComments, Problem... expectedProblems) throws Exception { final RenameRefactoring[] r = new RenameRefactoring[1]; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists