/*******************************************************************************
 * Copyright (c) 2017 Obeo.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Obeo - initial API and implementation and/or initial documentation
 *    ...
 *******************************************************************************/
package org.eclipse.intent.mapping.emf.ide.connector;

import org.eclipse.emf.cdo.eresource.CDOResourceNode;
import org.eclipse.intent.mapping.emf.connector.CDOResourceNodeConnector;
import org.eclipse.intent.mapping.ide.IdeMappingUtils;

/**
 * Ide {@link CDOResourceNodeConnector}.
 *
 * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
 */
public class IdeCDOResourceNodeConnector extends CDOResourceNodeConnector {

	@Override
	protected Object adapt(Object element) {
		final Object res;

		final CDOResourceNode adaptedElement = IdeMappingUtils.adapt(element, CDOResourceNode.class);
		if (adaptedElement != null) {
			res = adaptedElement;
		} else {
			res = super.adapt(element);
		}

		return res;
	}

}
