This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 176221
Collapse All | Expand All

(-)a/debugger.jpda.ant/antsrc/org/netbeans/modules/debugger/jpda/ant/JPDAConnect.java (+44 lines)
Lines 42-48 Link Here
42
package org.netbeans.modules.debugger.jpda.ant;
42
package org.netbeans.modules.debugger.jpda.ant;
43
43
44
import java.io.File;
44
import java.io.File;
45
import java.lang.ref.WeakReference;
46
import java.net.URL;
45
import java.util.HashMap;
47
import java.util.HashMap;
48
import java.util.LinkedList;
49
import java.util.List;
46
import java.util.Map;
50
import java.util.Map;
47
import java.util.logging.Level;
51
import java.util.logging.Level;
48
import java.util.logging.Logger;
52
import java.util.logging.Logger;
Lines 50-59 Link Here
50
import org.apache.tools.ant.Task;
54
import org.apache.tools.ant.Task;
51
import org.apache.tools.ant.types.Path;
55
import org.apache.tools.ant.types.Path;
52
56
57
import org.netbeans.api.debugger.Breakpoint;
58
import org.netbeans.api.debugger.DebuggerManager;
59
import org.netbeans.api.debugger.DebuggerManagerAdapter;
60
import org.netbeans.api.debugger.DebuggerManagerListener;
61
import org.netbeans.api.debugger.Session;
62
import org.netbeans.api.debugger.jpda.ExceptionBreakpoint;
53
import org.openide.util.RequestProcessor;
63
import org.openide.util.RequestProcessor;
54
64
55
import org.netbeans.api.debugger.jpda.JPDADebugger;
65
import org.netbeans.api.debugger.jpda.JPDADebugger;
56
import org.netbeans.api.java.classpath.ClassPath;
66
import org.netbeans.api.java.classpath.ClassPath;
67
import org.netbeans.api.java.source.BuildArtifactMapper.ArtifactsUpdated;
68
import org.netbeans.modules.debugger.jpda.ant.JPDAStart.Listener;
57
69
58
70
59
/**
71
/**
Lines 86-91 Link Here
86
    /** Default transport is socket*/
98
    /** Default transport is socket*/
87
    private String transport = "dt_socket"; // NOI18N
99
    private String transport = "dt_socket"; // NOI18N
88
    
100
    
101
    private String                  listeningCP = null;
89
    
102
    
90
    /**
103
    /**
91
     * Host to connect to.
104
     * Host to connect to.
Lines 132-137 Link Here
132
        return transport;
145
        return transport;
133
    }
146
    }
134
    
147
    
148
    public void setListeningcp(String listeningCP) {
149
        if (listeningCP != null && listeningCP.length() > 0) {
150
            this.listeningCP = listeningCP;
151
        }
152
    }
153
    
135
    public void setName (String name) {
154
    public void setName (String name) {
136
        this.name = name;
155
        this.name = name;
137
    }
156
    }
Lines 192-197 Link Here
192
        properties.put ("sourcepath", sourcePath); // NOI18N
211
        properties.put ("sourcepath", sourcePath); // NOI18N
193
        properties.put ("name", getName ()); // NOI18N
212
        properties.put ("name", getName ()); // NOI18N
194
        properties.put ("jdksources", jdkSourcePath); // NOI18N
213
        properties.put ("jdksources", jdkSourcePath); // NOI18N
214
                properties.put ("listeningCP", listeningCP); // NOI18N
195
        String workDir = getProject().getProperty("work.dir");
215
        String workDir = getProject().getProperty("work.dir");
196
        File baseDir;
216
        File baseDir;
197
        if (workDir != null) {
217
        if (workDir != null) {
Lines 203-214 Link Here
203
223
204
        logger.fine("JPDAConnect: properties = "+properties);
224
        logger.fine("JPDAConnect: properties = "+properties);
205
        
225
        
226
                final WeakReference<Session> startedSessionRef[] = new WeakReference[] { new WeakReference<Session>(null) };
227
228
                Map<URL, ArtifactsUpdated> listeners = new HashMap<URL, ArtifactsUpdated>();
229
                List<Breakpoint> artificialBreakpoints = new LinkedList<Breakpoint>();
230
                if (listeningCP != null) {
231
                    ExceptionBreakpoint b = JPDAStart.createCompilationErrorBreakpoint();
232
                    DebuggerManager.getDebuggerManager ().addBreakpoint (b);
233
                    artificialBreakpoints.add(b);
234
                }
235
236
                DebuggerManager.getDebuggerManager().addDebuggerListener(
237
                        DebuggerManager.PROP_DEBUGGER_ENGINES,
238
                        new Listener(null, artificialBreakpoints, listeners, startedSessionRef));
206
239
207
        synchronized(lock) {
240
        synchronized(lock) {
208
            RequestProcessor.getDefault ().post (new Runnable () {
241
            RequestProcessor.getDefault ().post (new Runnable () {
209
                public void run() {
242
                public void run() {
210
                    synchronized(lock) {
243
                    synchronized(lock) {
244
                        DebuggerManagerListener sessionListener = new DebuggerManagerAdapter() {
245
                            @Override
246
                            public void sessionAdded(Session session) {
247
                                synchronized (startedSessionRef) {
248
                                    // TODO: make that more deterministic.
249
                                    startedSessionRef[0] = new WeakReference(session);
250
                                }
251
                            }
252
                        };
211
                        try {
253
                        try {
254
                            DebuggerManager.getDebuggerManager().addDebuggerListener(sessionListener);
212
                            if (logger.isLoggable(Level.FINE)) {
255
                            if (logger.isLoggable(Level.FINE)) {
213
                                logger.fine(
256
                                logger.fine(
214
                                    "JPDAConnect.execute ().synchronized: "  // NOI18N
257
                                    "JPDAConnect.execute ().synchronized: "  // NOI18N
Lines 249-254 Link Here
249
                            lock[0] = e;
292
                            lock[0] = e;
250
                        } finally {
293
                        } finally {
251
                            lock.notify();
294
                            lock.notify();
295
                            DebuggerManager.getDebuggerManager().removeDebuggerListener(sessionListener);
252
                        }
296
                        }
253
                    }
297
                    }
254
                }
298
                }
(-)a/debugger.jpda.ant/antsrc/org/netbeans/modules/debugger/jpda/ant/JPDAStart.java (-4 / +6 lines)
Lines 176-182 Link Here
176
    }
176
    }
177
177
178
    public void setListeningcp(String listeningCP) {
178
    public void setListeningcp(String listeningCP) {
179
        this.listeningCP = listeningCP;
179
        if (listeningCP != null && listeningCP.length() > 0) {
180
            this.listeningCP = listeningCP;
181
        }
180
    }
182
    }
181
    
183
    
182
    public void addClasspath (Path path) {
184
    public void addClasspath (Path path) {
Lines 502-508 Link Here
502
        return breakpoint;
504
        return breakpoint;
503
    }
505
    }
504
506
505
    private ExceptionBreakpoint createCompilationErrorBreakpoint() {
507
    static ExceptionBreakpoint createCompilationErrorBreakpoint() {
506
        ExceptionBreakpoint b = ExceptionBreakpoint.create("java.lang.RuntimeException", ExceptionBreakpoint.TYPE_EXCEPTION_UNCATCHED);
508
        ExceptionBreakpoint b = ExceptionBreakpoint.create("java.lang.RuntimeException", ExceptionBreakpoint.TYPE_EXCEPTION_UNCATCHED);
507
        b.setHidden (true);
509
        b.setHidden (true);
508
        b.addJPDABreakpointListener(new JPDABreakpointListener() {
510
        b.addJPDABreakpointListener(new JPDABreakpointListener() {
Lines 750-756 Link Here
750
752
751
    }
753
    }
752
    
754
    
753
    private static class Listener extends DebuggerManagerAdapter {
755
    static class Listener extends DebuggerManagerAdapter {
754
        
756
        
755
        private Set                 debuggers = new HashSet ();
757
        private Set                 debuggers = new HashSet ();
756
758
Lines 759-765 Link Here
759
        private final Map<URL, ArtifactsUpdated> listeners;
761
        private final Map<URL, ArtifactsUpdated> listeners;
760
        private final WeakReference<Session> startedSessionRef[];
762
        private final WeakReference<Session> startedSessionRef[];
761
        
763
        
762
        private Listener(Breakpoint first,
764
        Listener(Breakpoint first,
763
                         List<Breakpoint> artificalBreakpoints,
765
                         List<Breakpoint> artificalBreakpoints,
764
                         Map<URL, ArtifactsUpdated> listeners,
766
                         Map<URL, ArtifactsUpdated> listeners,
765
                         WeakReference<Session> startedSessionRef[]) {
767
                         WeakReference<Session> startedSessionRef[]) {

Return to bug 176221