package org.eclipse.osbp.xtext.entitymock.scoping;

import java.util.List;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.xtext.entitymock.EntityMockPackage;
import org.eclipse.osbp.xtext.oxtype.scoping.eobject.OXEObjectImportSectionNamespaceScopeProvider;
import org.eclipse.xtext.scoping.impl.ImportNormalizer;

@SuppressWarnings("restriction")
public class EntityMockDSLImportSectionNamespaceScopeProvider extends
		OXEObjectImportSectionNamespaceScopeProvider {

	protected List<ImportNormalizer> internalGetImportedNamespaceResolvers(
			EObject context, boolean ignoreCase) {

		List<ImportNormalizer> result = super
				.internalGetImportedNamespaceResolvers(context, ignoreCase);

		if (!(context instanceof EntityMockPackage))
			return result;

		return result;
	}
}
