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