Source:
public String evaluateRegister(final String potentialRegisterName) { if (fTargetFrameContext == null) { return null; } final DsfExecutor executor = DsfSession.getSession(fDsfSessionId).getExecutor(); Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() { @Override protected void execute(final DataRequestMonitor<FormattedValueDMData> rm) { IExecutionDMContext exeCtx = DMContexts.getAncestorOfType(fTargetFrameContext, IExecutionDMContext.class); final IRunControl rc = getService(IRunControl.class); if (rc == null || !rc.isSuspended(exeCtx)) { rm.done(); return; } final IRegisters registersService = getService(IRegisters.class); if (registersService == null) { rm.done(); return; } registersService.findRegister(fTargetFrameContext, potentialRegisterName, new DataRequestMonitor<IRegisterDMContext>(executor, rm) { @Override protected void handleSuccess() { final IRegisterDMContext[] theOne = new IRegisterDMContext[1]; theOne[0] = getData(); registersService.getRegisterData(theOne[0], new DataRequestMonitor<IRegisterDMData>(executor, new DataRequestMonitor<IRegisterDMData>(executor, rm)) { @Override protected void handleCompleted() { if (!isSuccess()) { rm.done(); return; } FormattedValueDMContext fmtCtx = registersService.getFormattedValueContext(theOne[0], IFormattedValues.HEX_FORMAT); registersService.getFormattedExpressionValue(fmtCtx, new DataRequestMonitor<FormattedValueDMData>(executor, rm) { @Override protected void handleCompleted() { rm.done(getData()); } }); } }); } }); }}; executor.execute(query); FormattedValueDMData data = null; try { try { data = query.get(500, TimeUnit.MILLISECONDS); } catch (TimeoutException e) { } } catch (InterruptedException exc) { } catch (ExecutionException exc) { } if (data != null) { return data.getFormattedValue(); } return null; }

Target:
public String evaluateRegister(final String potentialRegisterName) { if (fTargetFrameContext == null) { return null; } final DsfExecutor executor = DsfSession.getSession(fDsfSessionId).getExecutor(); Query<FormattedValueDMData> query = new Query<FormattedValueDMData>() { @Override protected void execute(final DataRequestMonitor<FormattedValueDMData> rm) { IExecutionDMContext exeCtx = DMContexts.getAncestorOfType(fTargetFrameContext, IExecutionDMContext.class); final IRunControl rc = getService(IRunControl.class); if (rc == null || !rc.isSuspended(exeCtx)) { rm.done(); return; } final IRegisters registersService = getService(IRegisters.class); if (registersService == null) { rm.done(); return; } registersService.findRegister(fTargetFrameContext, potentialRegisterName, new DataRequestMonitor<IRegisterDMContext>(executor, rm) { @Override protected void handleSuccess() { final IRegisterDMContext theOne = getData(); FormattedValueDMContext fmtCtx = registersService.getFormattedValueContext(theOne, IFormattedValues.HEX_FORMAT); registersService.getFormattedExpressionValue(fmtCtx, new DataRequestMonitor<FormattedValueDMData>(executor, rm) { @Override protected void handleSuccess() { rm.done(getData()); } }); } }); }}; executor.execute(query); String returnValue = null; try { FormattedValueDMData data = query.get(500, TimeUnit.MILLISECONDS); if (data != null) { returnValue = data.getFormattedValue(); } } catch (InterruptedException exc) { } catch (ExecutionException exc) { } catch (TimeoutException exc) { } return returnValue; }