Skip to content

Commit a8c4d23

Browse files
committed
Fix pr comments
1 parent 5a2871e commit a8c4d23

File tree

10 files changed

+59
-35
lines changed

10 files changed

+59
-35
lines changed

ide/projectapi/apichanges.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,23 @@ is the proper place.
8383
<!-- ACTUAL CHANGES BEGIN HERE: -->
8484

8585
<changes>
86-
<change id="contained-project-context">
86+
<change id="run-test-in-parallel-action">
8787
<api name="general"/>
88-
<summary>Added <code>ContainedProjectFilter</code> that can pass list of projects the project action should apply to</summary>
88+
<summary>Added action for running tests in parallel</summary>
8989
<version major="1" minor="90"/>
9090
<date day="2" month="12" year="2024"/>
9191
<author login="petrovic-d"/>
9292
<compatibility addition="yes"/>
9393
<description>
94-
ContainedProjectFilter can be used to pass list of projects the project action should apply to.
94+
<p>
95+
<code><a href="@TOP@/org/netbeans/spi/project/ActionProvider.html">ActionProvider.COMMAND_TEST_PARALLEL</a></code> was introduced in order to
96+
allow running tests in parallel.
97+
<code><a href="@TOP@/org/netbeans/api/project/ContainedProjectFilter.html">ContainedProjectFilter</a></code> was added and
98+
it can be used to pass list of projects the project action should apply to.
99+
</p>
95100
</description>
96-
<class package="org.netbeans.spi.project" name="ContainedProjectFilter"/>
101+
<class package="org.netbeans.api.project" name="ContainedProjectFilter"/>
102+
<class package="org.netbeans.spi.project" name="ActionProvider"/>
97103
</change>
98104
<change id="project-action-context">
99105
<api name="general"/>

ide/projectapi/src/org/netbeans/spi/project/ContainedProjectFilter.java renamed to ide/projectapi/src/org/netbeans/api/project/ContainedProjectFilter.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,23 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*/
19-
package org.netbeans.spi.project;
19+
package org.netbeans.api.project;
2020

2121
import java.util.Collections;
2222
import java.util.List;
23-
import org.netbeans.api.project.Project;
2423

2524
/**
26-
*
25+
* Provides list of projects the project action should apply to
26+
*
27+
* <p>
28+
* An action that processes multiple projects might use <code>ContainedProjectFilter</code>
29+
* to operate only on a specific subset of projects.
30+
* The use of <code>ContainedProjectFilter</code> is optional and determined
31+
* by the requirements of individual actions.
32+
* Actions employing this class must document their specific filtering logic
33+
* and behavior.
34+
* </p>
35+
*
2736
* @author Dusan Petrovic
2837
*
2938
* @since 1.90

ide/projectapi/src/org/netbeans/spi/project/ActionProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ public interface ActionProvider {
8585

8686
/**
8787
* Standard command for running tests in parallel on given projects sub-modules
88+
*
89+
* @since 1.90
8890
*/
8991
String COMMAND_TEST_PARALLEL = "test.parallel"; // NOI18N
9092

java/gradle.java/src/org/netbeans/modules/gradle/java/ProjectsTokenProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.netbeans.modules.gradle.api.NbGradleProject;
3030
import org.netbeans.modules.gradle.spi.actions.ReplaceTokenProvider;
3131
import org.netbeans.spi.project.ActionProvider;
32-
import org.netbeans.spi.project.ContainedProjectFilter;
32+
import org.netbeans.api.project.ContainedProjectFilter;
3333
import org.netbeans.spi.project.ProjectServiceProvider;
3434
import org.openide.util.Lookup;
3535

java/gradle.test/src/org/netbeans/modules/gradle/test/GradleTestProgressListener.java

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
import org.netbeans.modules.gsf.testrunner.api.Trouble;
5959
import org.netbeans.spi.project.ProjectServiceProvider;
6060
import org.openide.util.Lookup;
61-
import org.openide.util.NbBundle;
6261

6362
/**
6463
*
@@ -132,14 +131,11 @@ private void processTestProgress(TestProgressEvent evt) {
132131
}
133132
}
134133

135-
@NbBundle.Messages({
136-
"ERR_Session_Null_Message=TestSession is null.",
137-
})
138134
private void processTestOutput(TestOutputEvent evt) {
139135
TestSession session = sessions.get(getSessionKey(evt.getDescriptor()));
140136
assert session != null;
141137
if (session == null) {
142-
throw new IllegalArgumentException(Bundle.ERR_Session_Null_Message());
138+
throw new IllegalArgumentException("TestSession is null");
143139
}
144140
TestOutputDescriptor desc = evt.getDescriptor();
145141
OperationDescriptor parent = desc.getParent();
@@ -160,31 +156,37 @@ private void processTestOutput(TestOutputEvent evt) {
160156
}
161157

162158

163-
private synchronized void sessionStart(TestStartEvent evt) {
159+
private void sessionStart(TestStartEvent evt) {
164160
String key = getSessionKey(evt.getDescriptor());
165-
TestSession session = sessions.computeIfAbsent(key, name -> new TestSession(name, getProject(key), TestSession.SessionType.TEST));
166-
runningTests.put(session, new ConcurrentHashMap<>());
161+
TestSession session;
162+
synchronized (this) {
163+
session = sessions.computeIfAbsent(key, name -> new TestSession(name, getProject(key), TestSession.SessionType.TEST));
164+
runningTests.put(session, new ConcurrentHashMap<>());
165+
}
167166
CoreManager manager = getManager();
168167
if (manager != null) {
169168
manager.registerNodeFactory();
170169
manager.testStarted(session);
171170
}
172171
}
173172

174-
private synchronized void sessionFinish(TestFinishEvent evt) {
175-
TestSession session = sessions.remove(getSessionKey(evt.getDescriptor()));
176-
assert session != null;
177-
runningTests.remove(session);
173+
private void sessionFinish(TestFinishEvent evt) {
174+
TestSession session;
175+
synchronized (this) {
176+
session = sessions.remove(getSessionKey(evt.getDescriptor()));
177+
assert session != null;
178+
runningTests.remove(session);
179+
}
178180
CoreManager manager = getManager();
179181
if (manager != null) {
180182
manager.sessionFinished(session);
181183
}
182184
}
183185

184-
private synchronized void suiteStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
186+
private void suiteStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
185187
}
186188

187-
private synchronized void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
189+
private void suiteFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
188190
TestSession session = sessions.get(getSessionKey(evt.getDescriptor()));
189191
assert session != null;
190192
TestOperationResult result = evt.getResult();
@@ -200,7 +202,7 @@ private synchronized void suiteFinish(TestFinishEvent evt, JvmTestOperationDescr
200202
}
201203
}
202204

203-
private synchronized void caseStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
205+
private void caseStart(TestStartEvent evt, JvmTestOperationDescriptor op) {
204206
TestSession session = sessions.get(getSessionKey(evt.getDescriptor()));
205207
assert session != null;
206208
assert op.getParent() != null;
@@ -214,14 +216,19 @@ private synchronized void caseStart(TestStartEvent evt, JvmTestOperationDescript
214216
}
215217
}
216218
Testcase tc = new GradleTestcase(op, session);
217-
runningTests.get(session).put(getTestOpKey(op), tc);
218-
session.addTestCase(tc);
219+
synchronized (this) {
220+
runningTests.get(session).put(getTestOpKey(op), tc);
221+
session.addTestCase(tc);
222+
}
219223
}
220224

221-
private synchronized void caseFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
222-
TestSession session = sessions.get(getSessionKey(evt.getDescriptor()));
223-
assert session != null;
224-
Testcase tc = runningTests.get(session).remove(getTestOpKey(op));
225+
private void caseFinish(TestFinishEvent evt, JvmTestOperationDescriptor op) {
226+
Testcase tc;
227+
synchronized (this) {
228+
TestSession session = sessions.get(getSessionKey(evt.getDescriptor()));
229+
assert session != null;
230+
tc = runningTests.get(session).remove(getTestOpKey(op));
231+
}
225232
if (tc != null) {
226233
TestOperationResult result = evt.getResult();
227234
long time = result.getEndTime() - result.getStartTime();
@@ -263,7 +270,7 @@ private synchronized void caseFinish(TestFinishEvent evt, JvmTestOperationDescri
263270

264271
}
265272

266-
private static String GRADLE_TEST_RUN = "Gradle Test Run :";
273+
private static final String GRADLE_TEST_RUN = "Gradle Test Run :"; // NOI18N
267274
private static String TEST = ":test";
268275

269276
private Project getProject(String key) {

java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
import org.netbeans.modules.nativeimage.api.debug.StartDebugParameters;
7777
import org.netbeans.spi.project.ActionProgress;
7878
import org.netbeans.spi.project.ActionProvider;
79-
import org.netbeans.spi.project.ContainedProjectFilter;
79+
import org.netbeans.api.project.ContainedProjectFilter;
8080
import org.netbeans.spi.project.ProjectConfiguration;
8181
import org.netbeans.spi.project.ProjectConfigurationProvider;
8282
import org.netbeans.spi.project.SingleMethod;

java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/ModuleInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
* @author dusanpetrovic
2424
*/
25-
public class ModuleInfo {
25+
public final class ModuleInfo {
2626

2727
private final String moduleName;
2828
private final String modulePath;

java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/progress/TestProgressHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private String statusToState(Status status) {
150150
}
151151
}
152152

153-
private static Pattern PATTERN = Pattern.compile("Gradle Test Run :(.*):test");
153+
private static final Pattern PATTERN = Pattern.compile("Gradle Test Run :(.*):test"); // NOI18N
154154

155155
private static ModuleInfo getModuleInfo(TestSession session) {
156156
Project project = session.getProject();

java/maven/src/org/netbeans/modules/maven/execute/DefaultReplaceTokenProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
import org.netbeans.modules.maven.spi.actions.ActionConvertor;
4949
import org.netbeans.modules.maven.spi.actions.ReplaceTokenProvider;
5050
import org.netbeans.spi.project.ActionProvider;
51-
import org.netbeans.spi.project.ContainedProjectFilter;
51+
import org.netbeans.api.project.ContainedProjectFilter;
5252
import org.netbeans.spi.project.ProjectServiceProvider;
5353
import org.netbeans.spi.project.SingleMethod;
5454
import org.netbeans.spi.project.support.ant.EditableProperties;

java/maven/src/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ private static List<String> createMavenExecutionCommand(RunConfig config, Constr
459459
String key = entry.getKey();
460460
String value = quote2apos(entry.getValue());
461461
if (MavenCommandLineOptions.optionRequiresValue(key) && (value.isEmpty() || value.equals("${" + key + "}"))) { //NOI18N
462-
DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(Bundle.MSG_MissingValue(key), NotifyDescriptor.WARNING_MESSAGE));
462+
DialogDisplayer.getDefault().notifyLater(new NotifyDescriptor.Message(Bundle.MSG_MissingValue(key), NotifyDescriptor.WARNING_MESSAGE));
463463
continue;
464464
}
465465
toRet.add("--" + key);

0 commit comments

Comments
 (0)