/** * Copyright (c) 2011-2012 Eclipse contributors and others. * 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 */ package org.eclipse.emf.ecore.xcore; import org.eclipse.emf.ecore.util.Diagnostician; import org.eclipse.emf.ecore.xcore.conversion.XcoreQualifiedNameValueConverter; import org.eclipse.emf.ecore.xcore.conversion.XcoreValueConverterService; import org.eclipse.emf.ecore.xcore.generator.XcoreGenerator; import org.eclipse.emf.ecore.xcore.resource.XcoreModelAssociator; import org.eclipse.emf.ecore.xcore.resource.XcoreReferableElementsUnloader; import org.eclipse.emf.ecore.xcore.resource.XcoreResource; import org.eclipse.emf.ecore.xcore.resource.containers.XcoreContainerManager; import org.eclipse.emf.ecore.xcore.scoping.XcoreIdentifableSimpleNameProvider; import org.eclipse.emf.ecore.xcore.scoping.XcoreImportedNamespaceAwareScopeProvider; import org.eclipse.emf.ecore.xcore.scoping.XcoreQualifiedNameProvider; import org.eclipse.emf.ecore.xcore.scoping.XcoreResourceDescriptionManager; import org.eclipse.emf.ecore.xcore.scoping.XcoreResourceDescriptionStrategy; import org.eclipse.emf.ecore.xcore.scoping.XcoreScopeProvider; import org.eclipse.emf.ecore.xcore.validation.XcoreDiagnosticConverter; import org.eclipse.emf.ecore.xcore.validation.XcoreDiagnostician; import org.eclipse.xtext.conversion.IValueConverterService; import org.eclipse.xtext.conversion.impl.QualifiedNameValueConverter; import org.eclipse.xtext.generator.IGenerator; import org.eclipse.xtext.naming.IQualifiedNameProvider; import org.eclipse.xtext.parser.antlr.IReferableElementsUnloader; import org.eclipse.xtext.resource.IContainer; import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy; import org.eclipse.xtext.resource.IDerivedStateComputer; import org.eclipse.xtext.resource.IResourceDescription.Manager; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.scoping.IScopeProvider; import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider; import org.eclipse.xtext.serializer.ISerializer; import org.eclipse.xtext.serializer.impl.Serializer; import org.eclipse.xtext.service.SingletonBinding; import org.eclipse.xtext.validation.IDiagnosticConverter; import org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider; import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations; import org.eclipse.xtext.xbase.jvmmodel.ILogicalContainerProvider; import com.google.inject.Binder; import com.google.inject.name.Names; /** * Use this class to register components to be used at runtime / without the Equinox extension registry. */ @SuppressWarnings("restriction") public class XcoreRuntimeModule extends AbstractXcoreRuntimeModule { @Override public Class<? extends ISerializer> bindISerializer() { return Serializer.class; } @Override public Class<? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() { return XcoreResourceDescriptionStrategy.class; } @Override public Class<? extends XtextResource> bindXtextResource() { return XcoreResource.class; } @Override public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { return XcoreQualifiedNameProvider.class; } @Override public void configureIScopeProviderDelegate(Binder binder) { binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to( XcoreImportedNamespaceAwareScopeProvider.class); } @Override public Class<? extends IScopeProvider> bindIScopeProvider() { return XcoreScopeProvider.class; } @Override public Class<? extends Manager> bindIResourceDescription$Manager() { return XcoreResourceDescriptionManager.class; } public Class<? extends IReferableElementsUnloader> bindIReferableElementsUnloader() { return XcoreReferableElementsUnloader.class; } @Override public Class<? extends IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() { return XcoreIdentifableSimpleNameProvider.class; } public Class<? extends IDiagnosticConverter> bindIDiagnosticConverter() { return XcoreDiagnosticConverter.class; } @Override @SingletonBinding public Class<? extends Diagnostician> bindDiagnostician() { return XcoreDiagnostician.class; } @Override public Class<? extends IValueConverterService> bindIValueConverterService() { return XcoreValueConverterService.class; } public Class<? extends QualifiedNameValueConverter> bindFixedQualifiedNameValueConverter() { return XcoreQualifiedNameValueConverter.class; } @Override public Class<? extends IGenerator> bindIGenerator() { return XcoreGenerator.class; } @Override public Class<? extends IContainer.Manager> bindIContainer$Manager() { return XcoreContainerManager.class; } public Class<? extends IJvmModelAssociations> bindIJvmModelAssociations() { return XcoreModelAssociator.class; } public Class<? extends ILogicalContainerProvider> bindILogicalContainerProvider() { return XcoreModelAssociator.class; } @Override public Class<? extends IDerivedStateComputer> bindIDerivedStateComputer() { return XcoreModelAssociator.class; } }