/*****************************************************************************
 * Copyright (c) 2013, 2017 CEA LIST.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *   CEA LIST - Initial API and implementation
 *****************************************************************************/
package org.eclipse.papyrus.cdo.internal.core.importer;

import java.util.concurrent.atomic.AtomicInteger;

import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.papyrus.cdo.core.importer.IModelTransferOperation;

/**
 * This is the ReentrantOperationContext type. Enjoy.
 */
public class ReentrantOperationContext
		implements IModelTransferOperation.Context {

	private final IModelTransferOperation.Context delegate;

	private AtomicInteger depth = new AtomicInteger();

	public ReentrantOperationContext(IModelTransferOperation.Context delegate) {
		super();

		this.delegate = delegate;
	}

	@Override
	public Diagnostic run(IModelTransferOperation operation) {
		Diagnostic result;

		try {
			if (depth.getAndIncrement() == 0) {
				// let the delegate run it
				result = delegate.run(operation);
			} else {
				// run it directly, assuming we are still in the context of the
				// delegate
				result = operation.run(new NullProgressMonitor());
			}
		} finally {
			depth.decrementAndGet();
		}

		return result;
	}

}
