@NotNull @Override public XBreakpointHandler<?>[] getBreakpointHandlers() { if (breakpointHandlers == null) { breakpointHandlers = new XBreakpointHandler<?>[] { new CloudBreakpointHandler(this, new ServerToIdeFileResolver()) }; } return breakpointHandlers; }
@Override public void run() { getBreakpointHandler().createIdeRepresentationsIfNecessary(currentList); } });
/** * Returns the XBreakpoint corresponding to the given server breakpoint. * * @param serverBreakpoint the server breakpoint representation * @return the local IDE representation in x-breakpoint form, if enabled */ @Nullable public XBreakpoint getEnabledXBreakpoint(@NotNull Breakpoint serverBreakpoint) { XBreakpoint ideBreakpoint = getXBreakpoint(serverBreakpoint); return (ideBreakpoint == null || !ideBreakpoint.isEnabled()) ? null : ideBreakpoint; }
final XBreakpoint breakpointHit = getBreakpointHandler().getEnabledXBreakpoint(breakpoint); if (breakpointHit == null) { continue; || !Boolean.TRUE.equals(breakpoint.getStatus().getIsError()))) { if (!getXDebugSession().isStopped()) { getBreakpointHandler().setStateToDisabled(breakpoint);
public void testRegisterGetAndDelete() { registerMockBreakpoint( psiJavaFile, new String[] {"foowatch1"}, "condition == true", 123, "foo.java", "com.google", false, "b_id"); assertNull(removedBp.get()); assertNotNull(addedBp.get()); assertContainsElements(addedBp.get().getExpressions(), "foowatch1"); assertTrue(addedBp.get().getLocation().getLine() == 124); assertTrue(addedBp.get().getLocation().getPath().equals("com/google/foo.java")); assertTrue(addedBp.get().getCondition().equals("condition == true")); addedBp.get().setId("b_id"); XBreakpoint xideBreakpoint = handler.getXBreakpoint(addedBp.get()); assertNotNull(xideBreakpoint); handler.deleteBreakpoint(addedBp.get()); assertNotNull(removedBp.get()); assertTrue(removedBp.get().equals(addedBp.get().getId())); }
public void testRegisterRegisteredButDisabledBreakpoint() { XLineBreakpointImpl<CloudLineBreakpointProperties> breakpoint = registerMockBreakpoint( psiJavaFile, NO_WATCHES, NO_CONDITION, 13, "fileName", "packageName", false, "12abc"); handler.setStateToDisabled(new Breakpoint().setId("12abc")); handler.registerBreakpoint(breakpoint); verify(stateController, times(2)) .setBreakpointAsync(isA(Breakpoint.class), isA(SetBreakpointHandler.class)); }
@SuppressWarnings("unchecked") public void testUnregisterBreakpoint_shouldSetAddedOnServerToFalseAfterHitOnBackend() throws Exception { XLineBreakpointImpl breakpoint = registerMockBreakpoint( psiJavaFile, NO_WATCHES, NO_CONDITION, 13, "fileName", "packageName", false, "12abc"); handler.setStateToDisabled(new Breakpoint().setId("12abc")); assertNotNull(breakpoint.getProperties()); assertTrue(((CloudLineBreakpointProperties) breakpoint.getProperties()).isAddedOnServer()); handler.unregisterBreakpoint(breakpoint, false); assertFalse(((CloudLineBreakpointProperties) breakpoint.getProperties()).isAddedOnServer()); verify(stateController, never()).deleteBreakpointAsync("12abc"); }
when(psiFile.getName()).thenReturn(shortFileName); when(psiManager.findFile(mockFile)).thenReturn(psiFile); handler.setPsiManager(psiManager); when(lineBreakpoint.getUserData(CloudBreakpointHandler.CLOUD_ID)).thenReturn(desiredResultId); handler.registerBreakpoint(lineBreakpoint); return lineBreakpoint;
/** Initializes the handler. */ public CloudBreakpointHandler( @NotNull CloudDebugProcess process, ServerToIdeFileResolver fileResolver) { super(CloudLineBreakpointType.class); this.process = process; setPsiManager(PsiManager.getInstance(this.process.getXDebugSession().getProject())); this.fileResolver = fileResolver; }
/** Called when the user deletes a snapshot from the snapshot list. */ public void deleteBreakpoint(@NotNull Breakpoint serverBreakpoint) { if (!Boolean.TRUE.equals(serverBreakpoint.getIsFinalState())) { setStateToDisabled(serverBreakpoint); } process.getStateController().deleteBreakpointAsync(serverBreakpoint.getId()); }
/** * Deletes breakpoints asynchronously on a threadpool thread. The user will see these breakpoints * gradually disappear. */ private void fireDeleteBreakpoints(@NotNull final List<Breakpoint> breakpointsToDelete) { for (Breakpoint breakpoint : breakpointsToDelete) { getModel().markForDelete(breakpoint.getId()); process.getBreakpointHandler().deleteBreakpoint(breakpoint); } getModel().fireTableDataChanged(); }
.thenReturn(cloudLineBreakpoint); CloudBreakpointHandler breakpointHandler = mock(CloudBreakpointHandler.class); when(breakpointHandler.getEnabledXBreakpoint(breakpoint)).thenReturn(xLineBreakpointImpl);
@Override public void actionPerformed(AnActionEvent event) { process.getBreakpointHandler().cloneToNewBreakpoints(getSelectedBreakpoints()); } }
@Override public void onSuccess(@NotNull final Breakpoint result) { ApplicationManager.getApplication() .invokeLater( () -> { // We will only do the selection if the id for this async task matches the // latest // user clicked item. This prevents multiple (and possibly out of order) // selections getting queued up. if (id.equals(navigatedSnapshotId)) { if (!Boolean.TRUE.equals(result.getIsFinalState()) || result.getStackFrames() == null) { getBreakpointHandler().navigateTo(result); if (result.getStackFrames() == null) { navigateToBreakpoint(result); } return; } navigateToBreakpoint(result); } }, ModalityState.NON_MODAL); }
public void testRegisterRegisteredBreakpoint() { XLineBreakpointImpl<CloudLineBreakpointProperties> breakpoint = registerMockBreakpoint( psiJavaFile, NO_WATCHES, NO_CONDITION, 13, "fileName", "packageName", false, "12abc"); handler.registerBreakpoint(breakpoint); verify(stateController, times(1)) .setBreakpointAsync(isA(Breakpoint.class), isA(SetBreakpointHandler.class)); }
@Override public void run() { getBreakpointHandler().createIdeRepresentationsIfNecessary(getCurrentBreakpointList()); } });
/** * Returns true if we have a local representation of the snapshot. The snapshot may be pending or * in final state. If in final state, then the local representation will be disabled (not * enabled). The user can re-enable the local state and it will create a new pending snapshot and * de-link the old snapshot from the local representation. * * <p>Snapshots that support more config show a "More..." link in the rightmost column of the * table. */ // todo: is there any feasible way to push this into the breakpoint class itself? // i.e. breakpoint.supportsMoreConfig()? boolean supportsMoreConfig(@Nullable Breakpoint breakpoint) { return process.getBreakpointHandler().getXBreakpoint(breakpoint) != null; }
handler = new CloudBreakpointHandler(process, fileResolver);
.thenReturn(classFile); handler.createIdeRepresentationsIfNecessary(breakpoints);
@Override public void mousePressed(MouseEvent event) { JTable table = (JTable) event.getSource(); Point point = event.getPoint(); Breakpoint breakpoint = getBreakPoint(point); int column = table.columnAtPoint(point); // todo: 4 and 1 here are magic numbers; use named constants for columns; maybe define // in CloudDebuggerTable class if (breakpoint != null && column == 4 && supportsMoreConfig(breakpoint)) { BreakpointsDialogFactory.getInstance(process.getXDebugSession().getProject()) .showDialog(process.getBreakpointHandler().getXBreakpoint(breakpoint)); } else if (event.getClickCount() == 1 && breakpoint != null && table.getSelectedRows().length == 1) { selectSnapshot(breakpoint, false); } } }