Skip to content

Commit 27a0b55

Browse files
authored
Merge branch 'main' into javavscode-95
2 parents 6dacac4 + 9acaa29 commit 27a0b55

File tree

9 files changed

+1064
-107
lines changed

9 files changed

+1064
-107
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ As soon as one of the settings is changed, the Language Server is restarted.
174174
It is possible to run Oracle Java Platform extension per workspace (VSCode window). This allows separation of Language Server for given project as Language Server JVM is not shared for more VSCode open workspaces (projects).
175175
It is possible to change this in `View | Command Palette | Preferences:Open User Settings | Jdk: Userdir`. Set to `local` to use dedicated Language Server per workspace or set to `global` to have one Language Server for all VS Code workspaces.
176176

177+
## Troubleshooting
178+
If your extension is not starting and throwing some error like no JDK found even if you have a working JDK installed in your machine, then you can try deleting cache for the workspace using `View | Command Palette | Delete oracle java extension cache for this workspace`.
179+
177180
## Contributing
178181

179182
This project welcomes contributions from the community. Before submitting a pull request, please [review our contribution guide](./CONTRIBUTING.md)

build.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
<property name="nbplatform.default.harness.dir" location="${nbplatform.default.netbeans.dest.dir}/harness" />
3232
<property name="nbantext.jar" location="netbeans/nbbuild/build/nbantext.jar" />
3333
<property name="nb_all" location="netbeans" />
34-
<property name="patches" value="patches/6330.diff patches/6760.diff patches/6834.diff patches/7001.diff patches/6968.diff patches/7158.diff patches/mvn-sh.diff patches/rename-debugger.diff patches/generate-dependencies.diff" />
34+
<property name="patches" value="patches/6330.diff patches/6760.diff patches/6834.diff patches/7001.diff patches/6968.diff patches/7104.diff patches/7158.diff patches/mvn-sh.diff patches/rename-debugger.diff patches/generate-dependencies.diff patches/remove-db.diff" />
3535
<condition property="cmd.suffix" value=".cmd" else="">
3636
<os family="windows"/>
3737
</condition>

patches/7104.diff

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
diff --git a/java/maven.model/nbproject/project.xml b/java/maven.model/nbproject/project.xml
2+
index fb79e8b0476f..6a671ce7c2ba 100644
3+
--- a/java/maven.model/nbproject/project.xml
4+
+++ b/java/maven.model/nbproject/project.xml
5+
@@ -225,6 +225,7 @@
6+
<friend>org.netbeans.modules.maven.jaxws</friend>
7+
<friend>org.netbeans.modules.maven.osgi</friend>
8+
<friend>org.netbeans.modules.maven.persistence</friend>
9+
+ <friend>org.netbeans.modules.maven.refactoring</friend>
10+
<friend>org.netbeans.modules.maven.repository</friend>
11+
<friend>org.netbeans.modules.maven.refactoring</friend>
12+
<friend>org.netbeans.modules.selenium.maven</friend>
13+
diff --git a/java/maven.refactoring/nbproject/project.xml b/java/maven.refactoring/nbproject/project.xml
14+
index 4e7b42e231c9..eb83e7325583 100644
15+
--- a/java/maven.refactoring/nbproject/project.xml
16+
+++ b/java/maven.refactoring/nbproject/project.xml
17+
@@ -100,7 +100,7 @@
18+
<compile-dependency/>
19+
<run-dependency>
20+
<release-version>1</release-version>
21+
- <specification-version>1.26</specification-version>
22+
+ <specification-version>1.67</specification-version>
23+
</run-dependency>
24+
</dependency>
25+
<dependency>
26+
diff --git a/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPlugin.java b/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPlugin.java
27+
index e336fb8f558b..3e6f8b8b1a57 100644
28+
--- a/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPlugin.java
29+
+++ b/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPlugin.java
30+
@@ -19,6 +19,7 @@
31+
package org.netbeans.modules.maven.refactoring;
32+
33+
import java.io.IOException;
34+
+import java.util.Arrays;
35+
import java.util.concurrent.atomic.AtomicReference;
36+
import java.util.logging.Level;
37+
import java.util.logging.Logger;
38+
@@ -26,29 +27,48 @@
39+
import javax.lang.model.element.TypeElement;
40+
import org.netbeans.api.java.source.CancellableTask;
41+
import org.netbeans.api.java.source.CompilationController;
42+
+import org.netbeans.api.java.source.ElementHandle;
43+
import org.netbeans.api.java.source.JavaSource;
44+
import org.netbeans.api.java.source.TreePathHandle;
45+
+import org.netbeans.api.project.FileOwnerQuery;
46+
+import org.netbeans.api.project.Project;
47+
import org.netbeans.modules.maven.indexer.api.RepositoryQueries;
48+
import org.netbeans.modules.maven.indexer.api.RepositoryQueries.ClassUsage;
49+
+import org.netbeans.modules.maven.model.ModelOperation;
50+
+import static org.netbeans.modules.maven.model.Utilities.performPOMModelOperations;
51+
+import org.netbeans.modules.maven.model.pom.POMModel;
52+
+import org.netbeans.modules.maven.model.pom.Properties;
53+
+import static org.netbeans.modules.maven.refactoring.MavenRefactoringPluginFactory.RUN_MAIN_CLASS;
54+
import org.netbeans.modules.refactoring.api.Problem;
55+
+import org.netbeans.modules.refactoring.api.RenameRefactoring;
56+
import org.netbeans.modules.refactoring.api.WhereUsedQuery;
57+
import org.netbeans.modules.refactoring.spi.RefactoringElementsBag;
58+
import org.netbeans.modules.refactoring.spi.RefactoringPlugin;
59+
+import org.openide.filesystems.FileObject;
60+
+import org.openide.util.Exceptions;
61+
62+
class MavenRefactoringPlugin implements RefactoringPlugin {
63+
64+
private static final Logger LOG = Logger.getLogger(MavenRefactoringPlugin.class.getName());
65+
-
66+
+
67+
+ private final RenameRefactoring refactoring;
68+
private final WhereUsedQuery query;
69+
private final TreePathHandle handle;
70+
71+
MavenRefactoringPlugin(WhereUsedQuery query, TreePathHandle handle) {
72+
this.query = query;
73+
this.handle = handle;
74+
+ this.refactoring = null;
75+
+ }
76+
+
77+
+ MavenRefactoringPlugin(RenameRefactoring refactoring, TreePathHandle handle) {
78+
+ this.refactoring = refactoring;
79+
+ this.handle = handle;
80+
+ this.query = null;
81+
}
82+
83+
@Override public Problem prepare(RefactoringElementsBag refactoringElements) {
84+
- if (!query.getBooleanValue(WhereUsedQuery.FIND_REFERENCES)) {
85+
+ if (query != null && !query.getBooleanValue(WhereUsedQuery.FIND_REFERENCES)) {
86+
return null;
87+
}
88+
final AtomicReference<String> fqn = new AtomicReference<String>();
89+
@@ -73,6 +93,44 @@ class MavenRefactoringPlugin implements RefactoringPlugin {
90+
}
91+
@Override public void cancel() {}
92+
};
93+
+
94+
+ if (refactoring != null) {
95+
+ ModelOperation<POMModel> renameMainClassProp = (final POMModel model) -> {
96+
+ Properties pr = model.getProject().getProperties();
97+
+ ElementHandle e = handle.getElementHandle();
98+
+ if (e != null) {
99+
+ String oldName = e.getBinaryName();
100+
+ String newName = refactoring.getNewName();
101+
+
102+
+ if (pr.getProperty(RUN_MAIN_CLASS) != null) {
103+
+ String oldProperty = pr.getProperty(RUN_MAIN_CLASS);
104+
+ if (oldProperty.equals(oldName)) {
105+
+ int lastIndex = oldName.lastIndexOf('.');
106+
+ String newPropertyValue = newName;
107+
+ if (lastIndex >= 0) {
108+
+ String packageName = oldName.substring(0, lastIndex + 1);
109+
+ newPropertyValue = packageName + newPropertyValue;
110+
+ }
111+
+ pr.setProperty(RUN_MAIN_CLASS, newPropertyValue);
112+
+ }
113+
+ }
114+
+ }
115+
+ };
116+
+
117+
+ try {
118+
+ FileObject fo = handle.getFileObject();
119+
+ Project p = FileOwnerQuery.getOwner(fo);
120+
+ final FileObject pom = p.getProjectDirectory().getFileObject("pom.xml"); // NOI18N
121+
+ pom.getFileSystem().runAtomicAction(() -> {
122+
+ performPOMModelOperations(pom, Arrays.asList(renameMainClassProp));
123+
+ });
124+
+ } catch (IOException ex) {
125+
+ Exceptions.printStackTrace(ex);
126+
+ }
127+
+
128+
+ return null;
129+
+ }
130+
+
131+
JavaSource source = JavaSource.forFileObject(handle.getFileObject());
132+
if (source != null) {
133+
try {
134+
diff --git a/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPluginFactory.java b/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPluginFactory.java
135+
index eef40cb62b61..a5ce1597dbc5 100644
136+
--- a/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPluginFactory.java
137+
+++ b/java/maven.refactoring/src/org/netbeans/modules/maven/refactoring/MavenRefactoringPluginFactory.java
138+
@@ -29,6 +29,7 @@
139+
import org.netbeans.modules.maven.api.NbMavenProject;
140+
import org.netbeans.modules.refactoring.api.AbstractRefactoring;
141+
import org.netbeans.modules.refactoring.api.WhereUsedQuery;
142+
+import org.netbeans.modules.refactoring.api.RenameRefactoring;
143+
import org.netbeans.modules.refactoring.spi.RefactoringPlugin;
144+
import org.netbeans.modules.refactoring.spi.RefactoringPluginFactory;
145+
import org.openide.filesystems.FileObject;
146+
@@ -39,8 +40,21 @@
147+
public class MavenRefactoringPluginFactory implements RefactoringPluginFactory {
148+
149+
private static final Logger LOG = Logger.getLogger(MavenRefactoringPluginFactory.class.getName());
150+
+ public static final String RUN_MAIN_CLASS = "exec.mainClass";
151+
152+
@Override public RefactoringPlugin createInstance(AbstractRefactoring refactoring) {
153+
+ if (refactoring instanceof RenameRefactoring) {
154+
+ TreePathHandle handle = refactoring.getRefactoringSource().lookup(TreePathHandle.class);
155+
+ if (handle != null && handle.getKind() == Tree.Kind.CLASS) {
156+
+ FileObject fo = handle.getFileObject();
157+
+ Project p = FileOwnerQuery.getOwner(fo);
158+
+ if (p != null && p.getLookup().lookup(NbMavenProject.class) != null) {
159+
+ LOG.log(Level.FINE, "Renaming {0} field in a project pom.xml", RUN_MAIN_CLASS);
160+
+ return new MavenRefactoringPlugin((RenameRefactoring) refactoring, handle);
161+
+ }
162+
+ return null;
163+
+ }
164+
+ }
165+
if (!(refactoring instanceof WhereUsedQuery)) {
166+
return null;
167+
}

0 commit comments

Comments
 (0)