/******************************************************************************* * 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.feature; import org.eclipse.xtend.core.compiler.UnicodeAwarePostProcessor; import org.eclipse.xtend.core.compiler.XtendGenerator; import org.eclipse.xtend.core.compiler.XtendOutputConfigurationProvider; import org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler; import org.eclipse.xtend.core.imports.XtendImportsConfiguration; import org.eclipse.xtend.core.jvmmodel.IXtendJvmAssociations; import org.eclipse.xtend.core.linking.XtendEObjectAtOffsetHelper; 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.XtendResourceDescriptionManager; import org.eclipse.xtend.core.scoping.AnonymousClassConstructorScopes; 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.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.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.OutputConfigurationProvider; import org.eclipse.xtext.linking.ILinker; import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider; import org.eclipse.xtext.linking.ILinkingService; 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.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.validation.NamesAreUniqueValidationHelper; 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.featurecalls.IdentifiableSimpleNameProvider; 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.formatting.NodeModelAccess; 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.scoping.batch.ConstructorScopes; import org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedFeatures; 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.internal.ScopeProviderAccess; 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.compiler.JnarioBatchCompiler; import org.jnario.compiler.JnarioExpressionHelper; import org.jnario.conversion.JnarioJavaIDValueConverter; import org.jnario.doc.AbstractDocGenerator; import org.jnario.doc.DocOutputConfigurationProvider; import org.jnario.documentation.XtendDocumentationProvider; import org.jnario.feature.compiler.FeatureBatchCompiler; import org.jnario.feature.conversion.FeatureValueConverterService; import org.jnario.feature.doc.FeatureDocGenerator; import org.jnario.feature.formatting.FeatureFormatter2; import org.jnario.feature.generator.FeatureCompiler; import org.jnario.feature.generator.FeatureJvmModelGenerator; import org.jnario.feature.jvmmodel.FeatureExecutableProvider; import org.jnario.feature.jvmmodel.FeatureJvmModelInferrer; import org.jnario.feature.linking.FeatureLazyLinker; import org.jnario.feature.linking.FeatureLinkingDiagnosticMessageProvider; import org.jnario.feature.linking.FeatureLinkingService; import org.jnario.feature.naming.FeatureClassNameProvider; import org.jnario.feature.naming.FeatureIdentifiableSimpleNameProvider; import org.jnario.feature.naming.FeatureQualifiedNameProvider; import org.jnario.feature.parser.CustomFeatureParser; import org.jnario.feature.resource.FeatureLocationInFileProvider; import org.jnario.feature.scoping.FeatureImportedNamespaceScopeProvider; import org.jnario.feature.scoping.FeatureScopeProviderAccess; import org.jnario.feature.validation.FeatureNamesAreUniqueValidationHelper; import org.jnario.formatter.JnarioNodeModelAccess; import org.jnario.jvmmodel.ExecutableProvider; 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.JnarioImplicitlyImportedFeatures; import org.jnario.scoping.JnarioResourceDescriptionStrategy; import org.jnario.typing.JnarioTypeComputer; import com.google.inject.Binder; import com.google.inject.Scopes; import com.google.inject.name.Names; /** * @author Birgit Engelmann - Initial contribution and API */ public class FeatureRuntimeModule extends org.jnario.feature.AbstractFeatureRuntimeModule { @Override public void configure(Binder binder) { super.configure(binder); binder.bind(FlexerFactory.class).in(Scopes.SINGLETON); binder.bind(AbstractDocGenerator.class).to(FeatureDocGenerator.class); binder.bind(SignatureHashBuilder.class).to( JnarioSignatureHashBuilder.class); binder.bind(JnarioNameProvider.class) .to(FeatureClassNameProvider.class); binder.bind(ExecutableProvider.class).to( FeatureExecutableProvider.class); binder.bind(Executable2ResultMapping.class).to( HashBasedSpec2ResultMapping.class); binder.bind(ImplicitlyImportedFeatures.class).to( JnarioImplicitlyImportedFeatures.class); binder.bind(ScopeProviderAccess.class).to( FeatureScopeProviderAccess.class); binder.bind(NamesAreUniqueValidationHelper.class).to( FeatureNamesAreUniqueValidationHelper.class); binder.bind(boolean.class) .annotatedWith( Names.named(CompositeEValidator.USE_EOBJECT_VALIDATOR)) .toInstance(false); binder.bind(XtendBatchCompiler.class).to(FeatureBatchCompiler.class); binder.bind(AnnotationProcessor.class).to(JnarioAnnotationProcessor.class); } public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder() { return ExtendedJvmTypesBuilder.class; } public Class<? extends JvmModelGenerator> bindJvmModelGenerator() { return FeatureJvmModelGenerator.class; } @Override public Class<? extends IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() { return FeatureIdentifiableSimpleNameProvider.class; } public Class<? extends OutputConfigurationProvider> bindOutputConfigurationProvider() { return DocOutputConfigurationProvider.class; } public Class<? extends IFilePostProcessor> bindPostProcessor() { return TraceAwarePostProcessor.class; } @Override public Class<? extends ILinkingService> bindILinkingService() { return FeatureLinkingService.class; } public Class<? extends JnarioBatchCompiler> bindJnarioBatchCompiler() { return FeatureBatchCompiler.class; } /**********************************************************************************/ public Class<? extends XExpressionHelper> bindXExpressionHelper() { return JnarioExpressionHelper.class; } @Override public Class<? extends IValueConverterService> bindIValueConverterService() { return FeatureValueConverterService.class; } @Override public void configureIScopeProviderDelegate(Binder binder) { binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)) .to(FeatureImportedNamespaceScopeProvider.class); } @Override public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { return FeatureQualifiedNameProvider.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 ILocationInFileProvider> bindILocationInFileProvider() { return FeatureLocationInFileProvider.class; } @Override public Class<? extends ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() { return FeatureLinkingDiagnosticMessageProvider.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; } public Class<? extends DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() { return XtendReentrantTypeResolver.class; } public Class<? extends XbaseCompiler> bindXbaseCompiler() { return FeatureCompiler.class; } public Class<? extends TraceAwarePostProcessor> bindTraceAwarePostProcessor() { return UnicodeAwarePostProcessor.class; } @Override public Class<? extends ITypeComputer> bindITypeComputer() { return JnarioTypeComputer.class; } public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() { return FeatureJvmModelInferrer.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 FeatureLazyLinker.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 XtendGenerator.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 CustomFeatureParser.class; } public Class<? extends TokenRegionProvider> bindTokenRegionProvider() { return TokenRegionProvider.class; } public Class<? extends IDValueConverter> bindIDValueConverter() { return JnarioJavaIDValueConverter.class; } public Class<? extends NodeModelAccess> bindNodeModelAccess(){ return JnarioNodeModelAccess.class; } public Class<? extends IBasicFormatter> bindIBasicFormatter() { return FeatureFormatter2.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 ConstructorScopes> bindConstructorScopes() { return AnonymousClassConstructorScopes.class; } public Class<? extends ResourceChangeRegistry> bindResourceChangeRegistry() { return NopResourceChangeRegistry.class; } }