Breakpoint event.
authorTomas Zezula <tzezula@netbeans.org>
Thu, 30 Jan 2014 14:15:54 +0100
changeset 18136f7eb8650b427
parent 18135 ec73b98ea30c
child 18137 fa60f5cbc517
Breakpoint event.
dew4nb/src/org/netbeans/modules/dew4nb/services/debugger/ActiveSessions.java
dew4nb/src/org/netbeans/modules/dew4nb/services/project/IORedirectProvider.java
     1.1 --- a/dew4nb/src/org/netbeans/modules/dew4nb/services/debugger/ActiveSessions.java	Thu Jan 30 11:42:10 2014 +0100
     1.2 +++ b/dew4nb/src/org/netbeans/modules/dew4nb/services/debugger/ActiveSessions.java	Thu Jan 30 14:15:54 2014 +0100
     1.3 @@ -165,7 +165,7 @@
     1.4              if (!(jpda instanceof JPDADebuggerImpl)) {
     1.5                  throw new IllegalStateException("Wrong debugger service.");    //NOI18N
     1.6              }
     1.7 -            jpda.addPropertyChangeListener(this);
     1.8 +            jpda.addPropertyChangeListener(this);            
     1.9          }
    1.10  
    1.11  
    1.12 @@ -179,16 +179,27 @@
    1.13                  currentThread = jpda.getCurrentThread();
    1.14                  if (currentThread != null) {
    1.15                      ((Customizer)currentThread).addPropertyChangeListener(this);
    1.16 +                    if (currentThread.isSuspended()) {
    1.17 +                        sendSuspend(currentThread);
    1.18 +                    }
    1.19                  }
    1.20              } else if (JPDAThread.PROP_SUSPENDED.equals(propName)) {
    1.21 -                CallStackFrame[] callStack = null;
    1.22 -                try {
    1.23 -                     callStack = currentThread.getCallStack();
    1.24 -                } catch (AbsentInformationException aie) {/*pass, no -g*/}
    1.25 -                env.sendObject(createSuspendResult(callStack));                
    1.26 +                assert  evt.getSource() == currentThread;
    1.27 +                if (currentThread.isSuspended()) {
    1.28 +                    sendSuspend(currentThread);
    1.29 +                }
    1.30              }
    1.31          }
    1.32  
    1.33 +
    1.34 +        private void sendSuspend(JPDAThread t) {
    1.35 +            CallStackFrame[] callStack = null;
    1.36 +            try {
    1.37 +                 callStack = t.getCallStack();
    1.38 +            } catch (AbsentInformationException aie) {/*pass, no -g*/}
    1.39 +            env.sendObject(createSuspendResult(callStack));
    1.40 +        }
    1.41 +
    1.42          @NonNull
    1.43          private SuspendResult createSuspendResult(@NullAllowed CallStackFrame[] callStack) {
    1.44              final SuspendResult res = new SuspendResult();
    1.45 @@ -224,7 +235,7 @@
    1.46                          }
    1.47                      }
    1.48                      res.getStack().add(String.format(
    1.49 -                        "%s:%d",
    1.50 +                        "src/%s:%d",
    1.51                          relativePath,
    1.52                          csf.getLineNumber(null)));
    1.53                  }
    1.54 @@ -234,4 +245,4 @@
    1.55  
    1.56      }
    1.57  
    1.58 -}
    1.59 +}
    1.60 \ No newline at end of file
     2.1 --- a/dew4nb/src/org/netbeans/modules/dew4nb/services/project/IORedirectProvider.java	Thu Jan 30 11:42:10 2014 +0100
     2.2 +++ b/dew4nb/src/org/netbeans/modules/dew4nb/services/project/IORedirectProvider.java	Thu Jan 30 14:15:54 2014 +0100
     2.3 @@ -85,8 +85,12 @@
     2.4      }
     2.5  
     2.6      @Override
     2.7 -    public InputOutput getIO(String name, boolean newIO) {        
     2.8 -        return new RedirectIO();
     2.9 +    public InputOutput getIO(String name, boolean newIO) {
    2.10 +        if (currentEnv.get() == null) {
    2.11 +            return new NullIO();
    2.12 +        } else {
    2.13 +            return new RedirectIO();
    2.14 +        }
    2.15      }
    2.16  
    2.17      @Override
    2.18 @@ -271,6 +275,7 @@
    2.19  
    2.20          @Override
    2.21          public void write(char[] cbuf, int off, int len) throws IOException {
    2.22 +            System.out.println(new String(cbuf, off, len));
    2.23          }
    2.24  
    2.25          @Override
    2.26 @@ -298,6 +303,72 @@
    2.27          }
    2.28      }
    2.29  
    2.30 +    private static final class NullIO implements InputOutput {
    2.31 +
    2.32 +        @Override
    2.33 +        public OutputWriter getOut() {
    2.34 +            return new NullOutputWriter();
    2.35 +        }
    2.36 +
    2.37 +        @Override
    2.38 +        public Reader getIn() {
    2.39 +            return new NullReader();
    2.40 +        }
    2.41 +
    2.42 +        @Override
    2.43 +        public OutputWriter getErr() {
    2.44 +            return new NullOutputWriter();
    2.45 +        }
    2.46 +
    2.47 +        @Override
    2.48 +        public void closeInputOutput() {
    2.49 +        }
    2.50 +
    2.51 +        @Override
    2.52 +        public boolean isClosed() {
    2.53 +            return false;
    2.54 +        }
    2.55 +
    2.56 +        @Override
    2.57 +        public void setOutputVisible(boolean value) {
    2.58 +        }
    2.59 +
    2.60 +        @Override
    2.61 +        public void setErrVisible(boolean value) {
    2.62 +        }
    2.63 +
    2.64 +        @Override
    2.65 +        public void setInputVisible(boolean value) {
    2.66 +        }
    2.67 +
    2.68 +        @Override
    2.69 +        public void select() {
    2.70 +        }
    2.71 +
    2.72 +        @Override
    2.73 +        public boolean isErrSeparated() {
    2.74 +            return true;
    2.75 +        }
    2.76 +
    2.77 +        @Override
    2.78 +        public void setErrSeparated(boolean value) {
    2.79 +        }
    2.80 +
    2.81 +        @Override
    2.82 +        public boolean isFocusTaken() {
    2.83 +            return true;
    2.84 +        }
    2.85 +
    2.86 +        @Override
    2.87 +        public void setFocusTaken(boolean value) {
    2.88 +        }
    2.89 +
    2.90 +        @Override
    2.91 +        public Reader flushReader() {
    2.92 +            return new NullReader();
    2.93 +        }
    2.94 +    }
    2.95 +
    2.96      @NonNull
    2.97      private static InvokeProjectActionResult createResponse(
    2.98              @NonNull final EndPoint.Env env,