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

entl 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 b923d00  LSP console IO is made more reliable, output is not lost now.
b923d00 is described below

commit b923d001be4afe7ebbb6b2bb7ef857aa6793037e
Author: Martin Entlicher <[email protected]>
AuthorDate: Thu Jan 6 15:01:20 2022 +0100

    LSP console IO is made more reliable, output is not lost now.
---
 .../server/debugging/launch/NbLaunchDelegate.java  |  2 +-
 .../server/ui/AbstractLspInputOutputProvider.java  | 24 ++++++++++++++--------
 .../src/org/openide/io/BridgingIOProvider.java     |  3 +--
 3 files changed, 17 insertions(+), 12 deletions(-)

diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
index 163b39c..6d16f55 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/launch/NbLaunchDelegate.java
@@ -152,8 +152,8 @@ public abstract class NbLaunchDelegate {
                 }
             }
         };
-        Project prj = FileOwnerQuery.getOwner(toRun);
         if (nativeImageFile == null) {
+            Project prj = FileOwnerQuery.getOwner(toRun);
             class W extends Writer {
                 @Override
                 public void write(char[] cbuf, int off, int len) throws 
IOException {
diff --git 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/ui/AbstractLspInputOutputProvider.java
 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/ui/AbstractLspInputOutputProvider.java
index e5a54f6..34c3407 100644
--- 
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/ui/AbstractLspInputOutputProvider.java
+++ 
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/ui/AbstractLspInputOutputProvider.java
@@ -58,12 +58,12 @@ public abstract class AbstractLspInputOutputProvider 
implements InputOutputProvi
 
     @Override
     public final PrintWriter getOut(LspIO io) {
-        return io.out;
+        return new PrintWriter(io.out);
     }
 
     @Override
     public final PrintWriter getErr(LspIO io) {
-        return io.err;
+        return new PrintWriter(io.err);
     }
 
     @Override
@@ -94,7 +94,7 @@ public abstract class AbstractLspInputOutputProvider 
implements InputOutputProvi
 
     @Override
     public final boolean isIOClosed(LspIO io) {
-        return io.closed;
+        return io.isClosed();
     }
 
     @Override
@@ -133,16 +133,15 @@ public abstract class AbstractLspInputOutputProvider 
implements InputOutputProvi
         private final IOContext ctx;
         final Lookup lookup;
         final Reader in;
-        final PrintWriter out;
-        final PrintWriter err;
-        volatile boolean closed;
+        final LspWriter out;
+        final LspWriter err;
 
         LspIO(String name, IOContext ioCtx, Lookup lookup) {
             this.name = name;
             this.ctx = ioCtx;
             this.lookup = lookup;
-            this.out = new PrintWriter(new LspWriter(true));
-            this.err = new PrintWriter(new LspWriter(false));
+            this.out = new LspWriter(true);
+            this.err = new LspWriter(false);
             Reader in;
             try {
                 InputStream is = ioCtx.getStdIn();
@@ -155,7 +154,9 @@ public abstract class AbstractLspInputOutputProvider 
implements InputOutputProvi
                     }
                 };
             } catch (IOException ex) {
-                err.write(ex.getLocalizedMessage());
+                try {
+                    err.write(ex.getLocalizedMessage());
+                } catch (IOException ioex) {}
                 in = new CharArrayReader(new char[0]) {
                     @Override
                     public void close() {
@@ -165,8 +166,13 @@ public abstract class AbstractLspInputOutputProvider 
implements InputOutputProvi
             this.in = in;
         }
 
+        boolean isClosed() {
+            return out.closed && err.closed;
+        }
+
         private final class LspWriter extends Writer {
             private final boolean stdIO;
+            volatile boolean closed;
 
             LspWriter(boolean stdIO) {
                 this.stdIO = stdIO;
diff --git a/platform/openide.io/src/org/openide/io/BridgingIOProvider.java 
b/platform/openide.io/src/org/openide/io/BridgingIOProvider.java
index c8d7416..8edd804 100644
--- a/platform/openide.io/src/org/openide/io/BridgingIOProvider.java
+++ b/platform/openide.io/src/org/openide/io/BridgingIOProvider.java
@@ -158,8 +158,7 @@ public class BridgingIOProvider<IO, S extends PrintWriter, 
P, F>
         @Override
         public OutputWriter getErr() {
             return new BridgingOutputWriter(ioDelegate,
-                    providerDelegate.getOut(ioDelegate)
-        );
+                    providerDelegate.getErr(ioDelegate));
         }
 
         @Override

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to