/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.calcnode; import com.opengamma.engine.calcnode.CalculationJobResult; import com.opengamma.engine.calcnode.JobInvocationReceiver; import com.opengamma.engine.calcnode.JobInvoker; /** * Simple JobInvocationReceiver for use in the unit tests. Stores the result and allows the caller * to block until a result is written. */ public class TestJobInvocationReceiver implements JobInvocationReceiver { private CalculationJobResult _completionResult; private Exception _failureResult; @Override public synchronized void jobCompleted(final CalculationJobResult result) { _completionResult = result; notify(); } @Override public synchronized void jobFailed(final JobInvoker jobInvoker, final String nodeId, final Exception failure) { _failureResult = failure; notify(); } public CalculationJobResult getCompletionResult() { return _completionResult; } public Exception getFailureResult () { return _failureResult; } private synchronized void waitForResult (final long timeoutMillis) { if ((_completionResult == null) && (_failureResult == null)) { try { wait(timeoutMillis); } catch (InterruptedException e) { } } } public CalculationJobResult waitForCompletionResult(final long timeoutMillis) { waitForResult (timeoutMillis); return _completionResult; } public Exception waitForFailureResult (final long timeoutMillis) { waitForResult (timeoutMillis); return _failureResult; } }