This is an automated email from the ASF dual-hosted git repository.

dbalek 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 fe150eb806 LSP: Fix broken source for workspace symbol resolution.
     new 72b63fdba3 Merge pull request #6374 from 
dbalek/dbalek/lsp-open-source-for-symbol
fe150eb806 is described below

commit fe150eb80611be2b025087a56592eba42281337f
Author: Dusan Balek <dusan.ba...@oracle.com>
AuthorDate: Thu Aug 24 10:59:54 2023 +0200

    LSP: Fix broken source for workspace symbol resolution.
---
 .../lsp/server/protocol/WorkspaceServiceImpl.java  | 72 ++++++++++------------
 .../java/lsp/server/TestCodeLanguageClient.java    |  1 -
 .../java/lsp/server/protocol/ServerTest.java       | 58 ++++++-----------
 3 files changed, 50 insertions(+), 81 deletions(-)

diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
index 0c42c372a8..afa8ed4782 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
@@ -32,9 +32,6 @@ import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -950,10 +947,6 @@ public final class WorkspaceServiceImpl implements 
WorkspaceService, LanguageCli
         return UnitTestForSourceQuery.findSources(sg.getRootFolder()).length > 
0;
     }
 
-    private static final Position NO_POS = new Position(0, 0);
-    private static final Range NO_RANGE = new Range(NO_POS, NO_POS);
-    private static final String SOURCE_FOR = "sourceFor:";
-
     @Override
     public CompletableFuture<Either<List<? extends SymbolInformation>, List<? 
extends WorkspaceSymbol>>> symbol(WorkspaceSymbolParams params) {
         String query = params.getQuery();
@@ -1132,8 +1125,8 @@ public final class WorkspaceServiceImpl implements 
WorkspaceService, LanguageCli
                                         int idx = fqn.lastIndexOf('.');
                                         String simpleName = idx < 0 ? fqn : 
fqn.substring(idx + 1);
                                         String contextName = idx < 0 ? null : 
fqn.substring(0, idx);
-                                        String uri = 
URLEncoder.encode(pair.second().toURI().toString() + '?' + 
handle.getKind().name() + '#' + handle.getBinaryName(), 
StandardCharsets.UTF_8.toString());
-                                        WorkspaceSymbol symbol = new 
WorkspaceSymbol(simpleName, Utils.elementKind2SymbolKind(handle.getKind()), 
Either.forRight(new WorkspaceSymbolLocation(SOURCE_FOR + uri)), contextName);
+                                        String uri = 
(pair.second().toURI().toString()) + '?' + handle.getKind().name() + '#' + 
handle.getBinaryName();
+                                        WorkspaceSymbol symbol = new 
WorkspaceSymbol(simpleName, Utils.elementKind2SymbolKind(handle.getKind()), 
Either.forRight(new WorkspaceSymbolLocation(uri)), contextName);
                                         symbols.add(symbol);
                                     }
                                 }
@@ -1157,44 +1150,41 @@ public final class WorkspaceServiceImpl implements 
WorkspaceService, LanguageCli
     @Override
     public CompletableFuture<WorkspaceSymbol> 
resolveWorkspaceSymbol(WorkspaceSymbol workspaceSymbol) {
         String sourceUri = workspaceSymbol.getLocation().isLeft() ? 
workspaceSymbol.getLocation().getLeft().getUri() : 
workspaceSymbol.getLocation().getRight().getUri();
-        if (!sourceUri.startsWith(SOURCE_FOR)) {
-            return CompletableFuture.completedFuture(workspaceSymbol);
-        }
         CompletableFuture<WorkspaceSymbol> result = new CompletableFuture<>();
         try {
-            sourceUri = 
URLDecoder.decode(sourceUri.substring(SOURCE_FOR.length()), 
StandardCharsets.UTF_8.toString());
             int qIdx = sourceUri.lastIndexOf('?');
             int hIdx = sourceUri.lastIndexOf('#');
             if (qIdx < 0 || hIdx < 0 || hIdx <= qIdx) {
-                throw new IllegalArgumentException("Invalid uri: " + 
sourceUri);
-            }
-            String rootUri = sourceUri.substring(0, qIdx);
-            FileObject root = 
URLMapper.findFileObject(URI.create(rootUri).toURL());
-            if (root == null) {
-                throw new IllegalStateException("Unable to find root: " + 
rootUri);
-            }
-            ElementHandle typeHandle = 
ElementHandleAccessor.getInstance().create(ElementKind.valueOf(sourceUri.substring(qIdx
 + 1, hIdx)), sourceUri.substring(hIdx + 1));
-            CompletableFuture<ElementOpen.Location> location = 
ElementOpen.getLocation(ClasspathInfo.create(root), typeHandle, 
typeHandle.getQualifiedName().replace('.', '/') + ".class");
-            location.exceptionally(ex -> {
-                result.completeExceptionally(ex);
-                return null;
-            }).thenAccept(loc -> {
-                if (loc != null) {
-                    ShowDocumentParams sdp = new 
ShowDocumentParams(Utils.toUri(loc.getFileObject()));
-                    Position position = 
Utils.createPosition(loc.getFileObject(), loc.getStartOffset());
-                    sdp.setSelection(new Range(position, position));
-                    client.showDocument(sdp).thenAccept(res -> {
-                        if (res.isSuccess()) {
-                            workspaceSymbol.setLocation(Either.forLeft(new 
Location(Utils.toUri(loc.getFileObject()), new Range(position, position))));
-                            result.complete(workspaceSymbol);
-                        } else {
-                            result.completeExceptionally(new 
IllegalStateException("Cannot open source for: " + 
typeHandle.getQualifiedName()));
-                        }
-                    });
-                } else if (!result.isCompletedExceptionally()) {
-                    result.completeExceptionally(new 
IllegalStateException("Cannot find source for: " + 
typeHandle.getQualifiedName()));
+                result.complete(workspaceSymbol);
+            } else {
+                String rootUri = sourceUri.substring(0, qIdx);
+                FileObject root = Utils.fromUri(rootUri);
+                if (root == null) {
+                    throw new IllegalStateException("Unable to find root: " + 
rootUri);
                 }
-            });
+                ElementHandle typeHandle = 
ElementHandleAccessor.getInstance().create(ElementKind.valueOf(sourceUri.substring(qIdx
 + 1, hIdx)), sourceUri.substring(hIdx + 1));
+                CompletableFuture<ElementOpen.Location> location = 
ElementOpen.getLocation(ClasspathInfo.create(root), typeHandle, 
typeHandle.getQualifiedName().replace('.', '/') + ".class");
+                location.exceptionally(ex -> {
+                    result.completeExceptionally(ex);
+                    return null;
+                }).thenAccept(loc -> {
+                    if (loc != null) {
+                        ShowDocumentParams sdp = new 
ShowDocumentParams(Utils.toUri(loc.getFileObject()));
+                        Position position = 
Utils.createPosition(loc.getFileObject(), loc.getStartOffset());
+                        sdp.setSelection(new Range(position, position));
+                        client.showDocument(sdp).thenAccept(res -> {
+                            if (res.isSuccess()) {
+                                workspaceSymbol.setLocation(Either.forLeft(new 
Location(Utils.toUri(loc.getFileObject()), new Range(position, position))));
+                                result.complete(workspaceSymbol);
+                            } else {
+                                result.completeExceptionally(new 
IllegalStateException("Cannot open source for: " + 
typeHandle.getQualifiedName()));
+                            }
+                        });
+                    } else if (!result.isCompletedExceptionally()) {
+                        result.completeExceptionally(new 
IllegalStateException("Cannot find source for: " + 
typeHandle.getQualifiedName()));
+                    }
+                });
+            }
         } catch (Throwable t) {
             result.completeExceptionally(t);
         }
diff --git 
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/TestCodeLanguageClient.java
 
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/TestCodeLanguageClient.java
index 33523b8041..d26ba5d8a6 100644
--- 
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/TestCodeLanguageClient.java
+++ 
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/TestCodeLanguageClient.java
@@ -125,7 +125,6 @@ public abstract class TestCodeLanguageClient implements 
NbCodeLanguageClient {
 
     @Override
     public void telemetryEvent(Object params) {
-        throw new UnsupportedOperationException();
     }
 
     @Override
diff --git 
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
 
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
index 4a7645dbca..9d3412e0aa 100644
--- 
a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
+++ 
b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
@@ -53,6 +53,7 @@ import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
@@ -122,6 +123,8 @@ import org.eclipse.lsp4j.SemanticTokensCapabilities;
 import org.eclipse.lsp4j.SemanticTokensLegend;
 import org.eclipse.lsp4j.SemanticTokensParams;
 import org.eclipse.lsp4j.ResourceOperationKind;
+import org.eclipse.lsp4j.ShowDocumentParams;
+import org.eclipse.lsp4j.ShowDocumentResult;
 import org.eclipse.lsp4j.ShowMessageRequestParams;
 import org.eclipse.lsp4j.SymbolInformation;
 import org.eclipse.lsp4j.TextDocumentClientCapabilities;
@@ -329,7 +332,6 @@ public class ServerTest extends NbTestCase {
         
         @Override
         public void telemetryEvent(Object arg0) {
-            throw new UnsupportedOperationException("Not supported yet.");
         }
 
         @Override
@@ -671,7 +673,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -781,7 +782,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -924,7 +924,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1008,7 +1007,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1073,7 +1071,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object params) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1137,7 +1134,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object params) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1239,7 +1235,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1307,7 +1302,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1357,7 +1351,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1416,7 +1409,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1555,7 +1547,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1717,7 +1708,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new TestCodeLanguageClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1822,7 +1812,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -1848,6 +1837,11 @@ public class ServerTest extends NbTestCase {
             public void logMessage(MessageParams arg0) {
                 throw new UnsupportedOperationException("Not supported yet.");
             }
+
+            @Override
+            public CompletableFuture<ShowDocumentResult> 
showDocument(ShowDocumentParams params) {
+                return CompletableFuture.completedFuture(new 
ShowDocumentResult(true));
+            }
         }, client.getInputStream(), client.getOutputStream());
         serverLauncher.startListening();
         LanguageServer server = serverLauncher.getRemoteProxy();
@@ -1856,13 +1850,20 @@ public class ServerTest extends NbTestCase {
         InitializeResult result = server.initialize(initParams).get();
         indexingComplete.await();
         Either<List<? extends SymbolInformation>, List<? extends 
WorkspaceSymbol>> symbols = server.getWorkspaceService().symbol(new 
WorkspaceSymbolParams("Tes")).get();
-        List<String> actual = symbols.getRight().stream().map(ws -> 
ws.getKind() + ":" + ws.getName() + ":" + ws.getContainerName() + ":"
-                + (ws.getLocation().isLeft() ? 
toString(ws.getLocation().getLeft()) : 
toString(ws.getLocation().getRight()))).collect(Collectors.toList());
+        List<String> actual = symbols.getRight().stream().map(symbol -> {
+            WorkspaceSymbol ws;
+            try {
+                ws = 
server.getWorkspaceService().resolveWorkspaceSymbol(symbol).get();
+            } catch (Exception ex) {
+                ws = symbol;
+            }
+            return ws.getKind() + ":" + ws.getName() + ":" + 
ws.getContainerName() + ":" + (ws.getLocation().isLeft() ? 
toString(ws.getLocation().getLeft()) : toString(ws.getLocation().getRight()));
+        }).collect(Collectors.toList());
         assertEquals(Arrays.asList("Constructor:Test():Test:Test.java:0:7-0:7",
                                    
"Method:testMethod():Test:Test.java:2:4-2:38",
                                    
"Constructor:TestNested():Test.TestNested:Test.java:1:18-1:18",
-                                   "Class:Test:null:Test",
-                                   "Class:TestNested:Test:Test%24TestNested"),
+                                   "Class:Test:null:Test.java:0:13-0:13",
+                                   
"Class:TestNested:Test:Test.java:1:24-1:24"),
                      actual);
     }
 
@@ -1882,7 +1883,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2022,7 +2022,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2112,7 +2111,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2203,7 +2201,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2297,7 +2294,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2388,7 +2384,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2480,7 +2475,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2589,7 +2583,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2693,7 +2686,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2797,7 +2789,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -2904,7 +2895,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -3038,7 +3028,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -3558,7 +3547,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -3692,7 +3680,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -4581,7 +4568,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -4661,7 +4647,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -4745,7 +4730,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -4824,7 +4808,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -4893,7 +4876,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LspClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -5028,7 +5010,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LanguageClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override
@@ -5091,7 +5072,6 @@ public class ServerTest extends NbTestCase {
         Launcher<LanguageServer> serverLauncher = 
createClientLauncherWithLogging(new LanguageClient() {
             @Override
             public void telemetryEvent(Object arg0) {
-                throw new UnsupportedOperationException("Not supported yet.");
             }
 
             @Override


---------------------------------------------------------------------
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

Reply via email to