You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2020/09/13 21:03:17 UTC
[netbeans] branch master updated: [NETBEANS-4681] Fixed issue :
refactor record rename & move record file to other package
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 <ak...@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-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists