/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.depgraph; import com.opengamma.engine.value.ValueRequirement; /* package */abstract class DirectResolvedValueProducer extends AbstractResolvedValueProducer { private volatile boolean _recursionDetected; public DirectResolvedValueProducer(final ValueRequirement valueRequirement) { super(valueRequirement); } @Override protected void setRecursionDetected() { _recursionDetected = true; super.setRecursionDetected(); } public boolean wasRecursionDetected() { return _recursionDetected; } @Override public Cancelable addCallback(final GraphBuildingContext context, final ResolvedValueCallback valueCallback) { final Cancelable cancelable = super.addCallback(context, valueCallback); if (_recursionDetected) { valueCallback.recursionDetected(); } return cancelable; } }