diff -r d1ae132cee71 api.debugger.jpda/apichanges.xml --- a/api.debugger.jpda/apichanges.xml Tue Feb 12 16:33:10 2013 +0100 +++ b/api.debugger.jpda/apichanges.xml Tue Feb 12 17:25:15 2013 +0100 @@ -801,6 +801,21 @@ + + + Breakpoints can be made session-specific. + + + + + + getSession()/setSession() methods are added to JPDABreakpoint class. + They can be used to make the breakpoint debugger session-specific. + + + + + diff -r d1ae132cee71 api.debugger.jpda/manifest.mf --- a/api.debugger.jpda/manifest.mf Tue Feb 12 16:33:10 2013 +0100 +++ b/api.debugger.jpda/manifest.mf Tue Feb 12 17:25:15 2013 +0100 @@ -1,6 +1,6 @@ Manifest-Version: 1.0 OpenIDE-Module: org.netbeans.api.debugger.jpda/2 OpenIDE-Module-Localizing-Bundle: org/netbeans/api/debugger/jpda/Bundle.properties -OpenIDE-Module-Specification-Version: 2.40 +OpenIDE-Module-Specification-Version: 2.41 OpenIDE-Module-Package-Dependencies: com.sun.jdi[VirtualMachineManager] diff -r d1ae132cee71 api.debugger.jpda/src/org/netbeans/api/debugger/jpda/JPDABreakpoint.java --- a/api.debugger.jpda/src/org/netbeans/api/debugger/jpda/JPDABreakpoint.java Tue Feb 12 16:33:10 2013 +0100 +++ b/api.debugger.jpda/src/org/netbeans/api/debugger/jpda/JPDABreakpoint.java Tue Feb 12 17:25:15 2013 +0100 @@ -98,7 +98,7 @@ private int suspend; private String printText; private Collection breakpointListeners = new HashSet(); - private JPDADebugger session; + private volatile JPDADebugger session; private List engines = new ArrayList(); @@ -234,9 +234,9 @@ * This will make the breakpoint session-specific * * @param session the specific session + * @since 2.41 */ - // TODO: make this public API - synchronized void setSession(JPDADebugger session) { + public void setSession(JPDADebugger session) { this.session = session; } @@ -246,9 +246,9 @@ * and is discarded after this session finishes. * * @return the specific session or null. + * @since 2.41 */ - // TODO: make this public API - synchronized JPDADebugger getSession() { + public JPDADebugger getSession() { return session; } diff -r d1ae132cee71 debugger.jpda.ui/nbproject/project.xml --- a/debugger.jpda.ui/nbproject/project.xml Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda.ui/nbproject/project.xml Tue Feb 12 17:25:15 2013 +0100 @@ -63,7 +63,7 @@ - 2 + 2.41 diff -r d1ae132cee71 debugger.jpda.ui/src/org/netbeans/modules/debugger/jpda/ui/actions/RunToCursorActionProvider.java --- a/debugger.jpda.ui/src/org/netbeans/modules/debugger/jpda/ui/actions/RunToCursorActionProvider.java Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda.ui/src/org/netbeans/modules/debugger/jpda/ui/actions/RunToCursorActionProvider.java Tue Feb 12 17:25:15 2013 +0100 @@ -152,14 +152,7 @@ if (currentThread != null) { breakpoint.setThreadFilters(debugger, new JPDAThread[] { currentThread }); } - // TODO: mb.setSession(debugger); - try { - java.lang.reflect.Method setSessionMethod = JPDABreakpoint.class.getDeclaredMethod("setSession", JPDADebugger.class); - setSessionMethod.setAccessible(true); - setSessionMethod.invoke(breakpoint, debugger); - } catch (Exception ex) { - org.openide.util.Exceptions.printStackTrace(ex); - } + breakpoint.setSession(debugger); DebuggerManager.getDebuggerManager ().addBreakpoint (breakpoint); if (currentThread != null) { currentThread.resume(); diff -r d1ae132cee71 debugger.jpda/nbproject/project.xml --- a/debugger.jpda/nbproject/project.xml Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda/nbproject/project.xml Tue Feb 12 17:25:15 2013 +0100 @@ -64,7 +64,7 @@ 2 - 2.37 + 2.41 diff -r d1ae132cee71 debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDAStepImpl.java --- a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDAStepImpl.java Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDAStepImpl.java Tue Feb 12 17:25:15 2013 +0100 @@ -341,14 +341,7 @@ mb.setSuspend(JPDABreakpoint.SUSPEND_NONE); lastMethodExitBreakpointListener = new MethodExitBreakpointListener(mb); mb.addJPDABreakpointListener(lastMethodExitBreakpointListener); - // TODO: mb.setSession(debugger); - try { - java.lang.reflect.Method setSessionMethod = JPDABreakpoint.class.getDeclaredMethod("setSession", JPDADebugger.class); - setSessionMethod.setAccessible(true); - setSessionMethod.invoke(mb, debugger); - } catch (Exception ex) { - org.openide.util.Exceptions.printStackTrace(ex); - } + mb.setSession(debugger); DebuggerManager.getDebuggerManager().addBreakpoint(mb); } } diff -r d1ae132cee71 debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/RunIntoMethodActionProvider.java --- a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/RunIntoMethodActionProvider.java Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/RunIntoMethodActionProvider.java Tue Feb 12 17:25:15 2013 +0100 @@ -265,14 +265,7 @@ doAction(url, event.getReferenceType(), methodLine, methodOffset, method, false); } }); - // TODO: cbrkp.setSession(debugger); - try { - java.lang.reflect.Method setSessionMethod = JPDABreakpoint.class.getDeclaredMethod("setSession", JPDADebugger.class); - setSessionMethod.setAccessible(true); - setSessionMethod.invoke(cbrkp, debugger); - } catch (Exception ex) { - Exceptions.printStackTrace(ex); - } + cbrkp.setSession(debugger); DebuggerManager.getDebuggerManager().addBreakpoint(cbrkp); resume(debugger); } diff -r d1ae132cee71 debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java --- a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java Tue Feb 12 17:25:15 2013 +0100 @@ -331,14 +331,7 @@ mb.setThreadFilters(getDebuggerImpl(), new JPDAThread[] { jtr }); lastMethodExitBreakpointListener = new MethodExitBreakpointListener(mb); mb.addJPDABreakpointListener(lastMethodExitBreakpointListener); - // TODO: mb.setSession(debugger); - try { - java.lang.reflect.Method setSessionMethod = JPDABreakpoint.class.getDeclaredMethod("setSession", JPDADebugger.class); - setSessionMethod.setAccessible(true); - setSessionMethod.invoke(mb, debugger); - } catch (Exception ex) { - Exceptions.printStackTrace(ex); - } + mb.setSession(debugger); DebuggerManager.getDebuggerManager().addBreakpoint(mb); } diff -r d1ae132cee71 debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/BreakpointsEngineListener.java --- a/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/BreakpointsEngineListener.java Tue Feb 12 16:33:10 2013 +0100 +++ b/debugger.jpda/src/org/netbeans/modules/debugger/jpda/breakpoints/BreakpointsEngineListener.java Tue Feb 12 17:25:15 2013 +0100 @@ -277,16 +277,7 @@ boolean removed = removeBreakpointImpl (bs [i]); if (removed && bs[i] instanceof JPDABreakpoint) { JPDABreakpoint jb = (JPDABreakpoint) bs[i]; - // TODO: JPDADebugger bDebugger = jb.getSession(); - JPDADebugger bDebugger; - try { - java.lang.reflect.Method getSessionMethod = JPDABreakpoint.class.getDeclaredMethod("getSession"); - getSessionMethod.setAccessible(true); - bDebugger = (JPDADebugger) getSessionMethod.invoke(jb); - } catch (Exception ex) { - bDebugger = null; - Exceptions.printStackTrace(ex); - } + JPDADebugger bDebugger = jb.getSession(); if (bDebugger != null && bDebugger.equals(debugger)) { // A hidden breakpoint submitted just for this one session. Remove it with the end of the session. DebuggerManager.getDebuggerManager ().removeBreakpoint(jb); @@ -317,16 +308,7 @@ synchronized (breakpointToImpl) { if (breakpointToImpl.containsKey (b)) return; if (!(b instanceof JPDABreakpoint)) return ; - JPDADebugger bDebugger; - try { - // TODO: bDebugger = ((JPDADebugger) b).getSession(); - java.lang.reflect.Method getSessionMethod = JPDABreakpoint.class.getDeclaredMethod("getSession"); - getSessionMethod.setAccessible(true); - bDebugger = (JPDADebugger) getSessionMethod.invoke(b); - } catch (Exception ex) { - bDebugger = null; - Exceptions.printStackTrace(ex); - } + JPDADebugger bDebugger = ((JPDABreakpoint) b).getSession(); if (bDebugger != null && !bDebugger.equals(debugger)) { return ; }