/*******************************************************************************
* Copyright (c) 2012 BMW Car IT 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
*******************************************************************************/
/*
* generated by Xtext
*/
package org.jnario.suite;
import org.eclipse.xtend.core.compiler.UnicodeAwarePostProcessor;
import org.eclipse.xtend.core.compiler.XtendCompiler;
import org.eclipse.xtend.core.compiler.XtendOutputConfigurationProvider;
import org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler;
import org.eclipse.xtend.core.formatting.XtendFormatter;
import org.eclipse.xtend.core.imports.XtendImportsConfiguration;
import org.eclipse.xtend.core.jvmmodel.IXtendJvmAssociations;
import org.eclipse.xtend.core.linking.Linker;
import org.eclipse.xtend.core.linking.XtendEObjectAtOffsetHelper;
import org.eclipse.xtend.core.linking.XtendLinkingDiagnosticMessageProvider;
import org.eclipse.xtend.core.macro.AnnotationProcessor;
import org.eclipse.xtend.core.macro.declaration.NopResourceChangeRegistry;
import org.eclipse.xtend.core.macro.declaration.ResourceChangeRegistry;
import org.eclipse.xtend.core.parser.antlr.internal.FlexerFactory;
import org.eclipse.xtend.core.resource.XtendLocationInFileProvider;
import org.eclipse.xtend.core.resource.XtendResourceDescriptionManager;
import org.eclipse.xtend.core.typesystem.LocalClassAwareTypeNames;
import org.eclipse.xtend.core.typesystem.TypeDeclarationAwareBatchTypeResolver;
import org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver;
import org.eclipse.xtend.core.typesystem.XtendTypeComputer;
import org.eclipse.xtend.core.typing.XtendExpressionHelper;
import org.eclipse.xtend.core.validation.XtendConfigurableIssueCodes;
import org.eclipse.xtend.core.validation.XtendEarlyExitValidator;
import org.eclipse.xtend.core.validation.XtendImplicitReturnFinder;
import org.eclipse.xtend.core.xtend.XtendFactory;
import org.eclipse.xtend.lib.macro.file.FileLocations;
import org.eclipse.xtext.common.types.descriptions.JvmDeclaredTypeSignatureHashProvider.SignatureHashBuilder;
import org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider;
import org.eclipse.xtext.conversion.IValueConverterService;
import org.eclipse.xtext.conversion.impl.IDValueConverter;
import org.eclipse.xtext.documentation.IEObjectDocumentationProvider;
import org.eclipse.xtext.generator.IFilePostProcessor;
import org.eclipse.xtext.generator.IGenerator;
import org.eclipse.xtext.generator.IOutputConfigurationProvider;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.generator.OutputConfigurationProvider;
import org.eclipse.xtext.linking.ILinker;
import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.parser.IParser;
import org.eclipse.xtext.parser.impl.TokenRegionProvider;
import org.eclipse.xtext.resource.EObjectAtOffsetHelper;
import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
import org.eclipse.xtext.resource.ILocationInFileProvider;
import org.eclipse.xtext.resource.IResourceDescription.Manager;
import org.eclipse.xtext.resource.IResourceDescriptions;
import org.eclipse.xtext.resource.impl.EagerResourceSetBasedResourceDescriptions;
import org.eclipse.xtext.scoping.IGlobalScopeProvider;
import org.eclipse.xtext.scoping.IScopeProvider;
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
import org.eclipse.xtext.validation.CompositeEValidator;
import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider;
import org.eclipse.xtext.validation.IResourceValidator;
import org.eclipse.xtext.xbase.compiler.JvmModelGenerator;
import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
import org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor;
import org.eclipse.xtext.xbase.file.AbstractFileSystemSupport;
import org.eclipse.xtext.xbase.file.FileLocationsImpl;
import org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport;
import org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider;
import org.eclipse.xtext.xbase.file.WorkspaceConfig;
import org.eclipse.xtext.xbase.formatting.IBasicFormatter;
import org.eclipse.xtext.xbase.imports.IImportsConfiguration;
import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator;
import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
import org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer;
import org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver;
import org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver;
import org.eclipse.xtext.xbase.typesystem.util.HumanReadableTypeNames;
import org.eclipse.xtext.xbase.util.XExpressionHelper;
import org.eclipse.xtext.xbase.validation.EarlyExitValidator;
import org.eclipse.xtext.xbase.validation.ImplicitReturnFinder;
import org.jnario.conversion.JnarioJavaIDValueConverter;
import org.jnario.doc.AbstractDocGenerator;
import org.jnario.doc.DocOutputConfigurationProvider;
import org.jnario.documentation.XtendDocumentationProvider;
import org.jnario.generator.JnarioJavaIoFileSystemAccess;
import org.jnario.jvmmodel.ExecutableProvider;
import org.jnario.jvmmodel.ExtendedJvmModelGenerator;
import org.jnario.jvmmodel.ExtendedJvmTypesBuilder;
import org.jnario.jvmmodel.JnarioNameProvider;
import org.jnario.jvmmodel.JnarioSignatureHashBuilder;
import org.jnario.macro.JnarioAnnotationProcessor;
import org.jnario.report.Executable2ResultMapping;
import org.jnario.report.HashBasedSpec2ResultMapping;
import org.jnario.scoping.JnarioResourceDescriptionStrategy;
import org.jnario.suite.compiler.SuiteBatchCompiler;
import org.jnario.suite.conversion.SuiteValueConverterService;
import org.jnario.suite.doc.SuiteDocGenerator;
import org.jnario.suite.generator.SuiteGenerator;
import org.jnario.suite.jvmmodel.SuiteClassNameProvider;
import org.jnario.suite.jvmmodel.SuiteExecutableProvider;
import org.jnario.suite.jvmmodel.SuiteJvmModelInferrer;
import org.jnario.suite.naming.SuiteQualifiedNameProvider;
import org.jnario.suite.scoping.SuiteImportedNamespaceScopeProvider;
import org.jnario.suite.scoping.SuiteScopeProvider;
import com.google.inject.Binder;
import com.google.inject.Scopes;
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 SuiteRuntimeModule extends org.jnario.suite.AbstractSuiteRuntimeModule {
@Override
public void configure(Binder binder) {
super.configure(binder);
binder.bind(FlexerFactory.class).in(Scopes.SINGLETON);
binder.bind(AbstractDocGenerator.class).to(SuiteDocGenerator.class);
binder.bind(SignatureHashBuilder.class).to(JnarioSignatureHashBuilder.class);
binder.bind(JnarioNameProvider.class).to(SuiteClassNameProvider.class);
binder.bind(ExecutableProvider.class).to(SuiteExecutableProvider.class);
binder.bind(Executable2ResultMapping.class).to(HashBasedSpec2ResultMapping.class);
binder.bind(boolean.class).annotatedWith(
Names.named(CompositeEValidator.USE_EOBJECT_VALIDATOR)).toInstance(false);
binder.bind(XtendBatchCompiler.class).to(SuiteBatchCompiler.class);
binder.bind(AnnotationProcessor.class).to(JnarioAnnotationProcessor.class);
}
@Override
public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
return TypesAwareDefaultGlobalScopeProvider.class;
}
public Class<? extends OutputConfigurationProvider> bindOutputConfigurationProvider() {
return DocOutputConfigurationProvider.class;
}
public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder(){
return ExtendedJvmTypesBuilder.class;
}
public Class<? extends JvmModelGenerator> bindJvmModelGenerator(){
return ExtendedJvmModelGenerator.class;
}
public Class<? extends IFilePostProcessor> bindPostProcessor() {
return TraceAwarePostProcessor.class;
}
public Class<? extends JavaIoFileSystemAccess> bindJavaIoFileSystemAccess() {
return JnarioJavaIoFileSystemAccess.class;
}
public Class<? extends org.jnario.compiler.JnarioBatchCompiler> bindJnarioBatchCompiler(){
return SuiteBatchCompiler.class;
}
public Class<? extends XExpressionHelper> bindXExpressionHelper() {
return XtendExpressionHelper.class;
}
@Override
public Class<? extends IValueConverterService> bindIValueConverterService() {
return SuiteValueConverterService.class;
}
@Override
public void configureIScopeProviderDelegate(Binder binder) {
binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
.to(SuiteImportedNamespaceScopeProvider.class);
}
@Override
public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return SuiteQualifiedNameProvider.class;
}
@Override
public Class <? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
return JnarioResourceDescriptionStrategy.class;
}
public Class<? extends JvmModelAssociator> bindJvmModelAssociator() {
return IXtendJvmAssociations.Impl.class;
}
public Class<? extends EarlyExitValidator> bindEarlyExitValidator() {
return XtendEarlyExitValidator.class;
}
public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
return XtendOutputConfigurationProvider.class;
}
@Override
public Class<? extends IScopeProvider> bindIScopeProvider() {
return SuiteScopeProvider.class;
}
@Override
public Class<? extends ILocationInFileProvider> bindILocationInFileProvider() {
return XtendLocationInFileProvider.class;
}
@Override
public Class<? extends ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
return XtendLinkingDiagnosticMessageProvider.class;
}
public Class<? extends IBasicFormatter> bindIBasicFormatter() {
return XtendFormatter.class;
}
public Class<? extends IImportsConfiguration> bindIImportsConfiguration() {
return XtendImportsConfiguration.class;
}
@Override
public Class<? extends ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
return XtendConfigurableIssueCodes.class;
}
public XtendFactory bindXtendFactory() {
return XtendFactory.eINSTANCE;
}
@Override
public Class<? extends DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
return TypeDeclarationAwareBatchTypeResolver.class;
}
@Override
public Class<? extends DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
return XtendReentrantTypeResolver.class;
}
public Class<? extends XbaseCompiler> bindXbaseCompiler() {
return XtendCompiler.class;
}
public Class<? extends TraceAwarePostProcessor> bindTraceAwarePostProcessor() {
return UnicodeAwarePostProcessor.class;
}
@Override
public Class<? extends ITypeComputer> bindITypeComputer() {
return XtendTypeComputer.class;
}
public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
return SuiteJvmModelInferrer.class;
}
@Override
public Class<? extends Manager> bindIResourceDescription$Manager() {
return XtendResourceDescriptionManager.class;
}
@Override
public Class<? extends IResourceValidator> bindIResourceValidator() {
return org.eclipse.xtend.core.validation.CachingResourceValidatorImpl.class;
}
@Override
public Class<? extends ILinker> bindILinker() {
return Linker.class;
}
/**
* @since 2.4.2
*/
@Override
public void configureIResourceDescriptions(com.google.inject.Binder binder) {
binder.bind(IResourceDescriptions.class).to(EagerResourceSetBasedResourceDescriptions.class);
}
public Class<? extends AbstractFileSystemSupport> bindAbstractFileSystemSupport() {
return JavaIOFileSystemSupport.class;
}
@Override
public Class<? extends IGenerator> bindIGenerator() {
return SuiteGenerator.class;
}
public void configureWorkspaceConfigContribution(Binder binder) {
binder.bind(WorkspaceConfig.class).toProvider(RuntimeWorkspaceConfigProvider.class);
}
public Class<? extends FileLocations> bindFileLocations() {
return FileLocationsImpl.class;
}
public Class<? extends IEObjectDocumentationProvider> bindIEObjectDocumentationProvider() {
return XtendDocumentationProvider.class;
}
@Override
public Class<? extends IParser> bindIParser() {
return SuiteParserWithoutPartialParsing.class;
}
public Class<? extends TokenRegionProvider> bindTokenRegionProvider() {
return TokenRegionProvider.class;
}
public Class<? extends IDValueConverter> bindIDValueConverter() {
return JnarioJavaIDValueConverter.class;
}
@Override
public Class<? extends EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
return XtendEObjectAtOffsetHelper.class;
}
public Class<? extends ImplicitReturnFinder> bindImplicitReturnFinder() {
return XtendImplicitReturnFinder.class;
}
public Class<? extends HumanReadableTypeNames> bindHumanReadableTypeNames() {
return LocalClassAwareTypeNames.class;
}
public Class<? extends ResourceChangeRegistry> bindResourceChangeRegistry() {
return NopResourceChangeRegistry.class;
}
}