PageRenderTime 44ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/org.jnario.feature/src/org/jnario/feature/FeatureRuntimeModule.java

http://github.com/bmwcarit/Jnario
Java | 365 lines | 295 code | 53 blank | 17 comment | 0 complexity | 3ef703eab5e225179c87c1bac284a2f6 MD5 | raw file
Possible License(s): Apache-2.0
  1. /*******************************************************************************
  2. * Copyright (c) 2012 BMW Car IT and others.
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the Eclipse Public License v1.0
  5. * which accompanies this distribution, and is available at
  6. * http://www.eclipse.org/legal/epl-v10.html
  7. *******************************************************************************/
  8. /*
  9. * generated by Xtext
  10. */
  11. package org.jnario.feature;
  12. import org.eclipse.xtend.core.compiler.UnicodeAwarePostProcessor;
  13. import org.eclipse.xtend.core.compiler.XtendGenerator;
  14. import org.eclipse.xtend.core.compiler.XtendOutputConfigurationProvider;
  15. import org.eclipse.xtend.core.compiler.batch.XtendBatchCompiler;
  16. import org.eclipse.xtend.core.imports.XtendImportsConfiguration;
  17. import org.eclipse.xtend.core.jvmmodel.IXtendJvmAssociations;
  18. import org.eclipse.xtend.core.linking.XtendEObjectAtOffsetHelper;
  19. import org.eclipse.xtend.core.macro.AnnotationProcessor;
  20. import org.eclipse.xtend.core.macro.declaration.NopResourceChangeRegistry;
  21. import org.eclipse.xtend.core.macro.declaration.ResourceChangeRegistry;
  22. import org.eclipse.xtend.core.parser.antlr.internal.FlexerFactory;
  23. import org.eclipse.xtend.core.resource.XtendResourceDescriptionManager;
  24. import org.eclipse.xtend.core.scoping.AnonymousClassConstructorScopes;
  25. import org.eclipse.xtend.core.typesystem.LocalClassAwareTypeNames;
  26. import org.eclipse.xtend.core.typesystem.TypeDeclarationAwareBatchTypeResolver;
  27. import org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver;
  28. import org.eclipse.xtend.core.validation.XtendConfigurableIssueCodes;
  29. import org.eclipse.xtend.core.validation.XtendEarlyExitValidator;
  30. import org.eclipse.xtend.core.validation.XtendImplicitReturnFinder;
  31. import org.eclipse.xtend.core.xtend.XtendFactory;
  32. import org.eclipse.xtend.lib.macro.file.FileLocations;
  33. import org.eclipse.xtext.common.types.descriptions.JvmDeclaredTypeSignatureHashProvider.SignatureHashBuilder;
  34. import org.eclipse.xtext.conversion.IValueConverterService;
  35. import org.eclipse.xtext.conversion.impl.IDValueConverter;
  36. import org.eclipse.xtext.documentation.IEObjectDocumentationProvider;
  37. import org.eclipse.xtext.generator.IFilePostProcessor;
  38. import org.eclipse.xtext.generator.IGenerator;
  39. import org.eclipse.xtext.generator.IOutputConfigurationProvider;
  40. import org.eclipse.xtext.generator.OutputConfigurationProvider;
  41. import org.eclipse.xtext.linking.ILinker;
  42. import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider;
  43. import org.eclipse.xtext.linking.ILinkingService;
  44. import org.eclipse.xtext.naming.IQualifiedNameProvider;
  45. import org.eclipse.xtext.parser.IParser;
  46. import org.eclipse.xtext.parser.impl.TokenRegionProvider;
  47. import org.eclipse.xtext.resource.EObjectAtOffsetHelper;
  48. import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
  49. import org.eclipse.xtext.resource.ILocationInFileProvider;
  50. import org.eclipse.xtext.resource.IResourceDescription.Manager;
  51. import org.eclipse.xtext.resource.IResourceDescriptions;
  52. import org.eclipse.xtext.resource.impl.EagerResourceSetBasedResourceDescriptions;
  53. import org.eclipse.xtext.scoping.IScopeProvider;
  54. import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
  55. import org.eclipse.xtext.validation.CompositeEValidator;
  56. import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider;
  57. import org.eclipse.xtext.validation.IResourceValidator;
  58. import org.eclipse.xtext.validation.NamesAreUniqueValidationHelper;
  59. import org.eclipse.xtext.xbase.compiler.JvmModelGenerator;
  60. import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
  61. import org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor;
  62. import org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider;
  63. import org.eclipse.xtext.xbase.file.AbstractFileSystemSupport;
  64. import org.eclipse.xtext.xbase.file.FileLocationsImpl;
  65. import org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport;
  66. import org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider;
  67. import org.eclipse.xtext.xbase.file.WorkspaceConfig;
  68. import org.eclipse.xtext.xbase.formatting.IBasicFormatter;
  69. import org.eclipse.xtext.xbase.formatting.NodeModelAccess;
  70. import org.eclipse.xtext.xbase.imports.IImportsConfiguration;
  71. import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
  72. import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator;
  73. import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
  74. import org.eclipse.xtext.xbase.scoping.batch.ConstructorScopes;
  75. import org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedFeatures;
  76. import org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer;
  77. import org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver;
  78. import org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver;
  79. import org.eclipse.xtext.xbase.typesystem.internal.ScopeProviderAccess;
  80. import org.eclipse.xtext.xbase.typesystem.util.HumanReadableTypeNames;
  81. import org.eclipse.xtext.xbase.util.XExpressionHelper;
  82. import org.eclipse.xtext.xbase.validation.EarlyExitValidator;
  83. import org.eclipse.xtext.xbase.validation.ImplicitReturnFinder;
  84. import org.jnario.compiler.JnarioBatchCompiler;
  85. import org.jnario.compiler.JnarioExpressionHelper;
  86. import org.jnario.conversion.JnarioJavaIDValueConverter;
  87. import org.jnario.doc.AbstractDocGenerator;
  88. import org.jnario.doc.DocOutputConfigurationProvider;
  89. import org.jnario.documentation.XtendDocumentationProvider;
  90. import org.jnario.feature.compiler.FeatureBatchCompiler;
  91. import org.jnario.feature.conversion.FeatureValueConverterService;
  92. import org.jnario.feature.doc.FeatureDocGenerator;
  93. import org.jnario.feature.formatting.FeatureFormatter2;
  94. import org.jnario.feature.generator.FeatureCompiler;
  95. import org.jnario.feature.generator.FeatureJvmModelGenerator;
  96. import org.jnario.feature.jvmmodel.FeatureExecutableProvider;
  97. import org.jnario.feature.jvmmodel.FeatureJvmModelInferrer;
  98. import org.jnario.feature.linking.FeatureLazyLinker;
  99. import org.jnario.feature.linking.FeatureLinkingDiagnosticMessageProvider;
  100. import org.jnario.feature.linking.FeatureLinkingService;
  101. import org.jnario.feature.naming.FeatureClassNameProvider;
  102. import org.jnario.feature.naming.FeatureIdentifiableSimpleNameProvider;
  103. import org.jnario.feature.naming.FeatureQualifiedNameProvider;
  104. import org.jnario.feature.parser.CustomFeatureParser;
  105. import org.jnario.feature.resource.FeatureLocationInFileProvider;
  106. import org.jnario.feature.scoping.FeatureImportedNamespaceScopeProvider;
  107. import org.jnario.feature.scoping.FeatureScopeProviderAccess;
  108. import org.jnario.feature.validation.FeatureNamesAreUniqueValidationHelper;
  109. import org.jnario.formatter.JnarioNodeModelAccess;
  110. import org.jnario.jvmmodel.ExecutableProvider;
  111. import org.jnario.jvmmodel.ExtendedJvmTypesBuilder;
  112. import org.jnario.jvmmodel.JnarioNameProvider;
  113. import org.jnario.jvmmodel.JnarioSignatureHashBuilder;
  114. import org.jnario.macro.JnarioAnnotationProcessor;
  115. import org.jnario.report.Executable2ResultMapping;
  116. import org.jnario.report.HashBasedSpec2ResultMapping;
  117. import org.jnario.scoping.JnarioImplicitlyImportedFeatures;
  118. import org.jnario.scoping.JnarioResourceDescriptionStrategy;
  119. import org.jnario.typing.JnarioTypeComputer;
  120. import com.google.inject.Binder;
  121. import com.google.inject.Scopes;
  122. import com.google.inject.name.Names;
  123. /**
  124. * @author Birgit Engelmann - Initial contribution and API
  125. */
  126. public class FeatureRuntimeModule extends
  127. org.jnario.feature.AbstractFeatureRuntimeModule {
  128. @Override
  129. public void configure(Binder binder) {
  130. super.configure(binder);
  131. binder.bind(FlexerFactory.class).in(Scopes.SINGLETON);
  132. binder.bind(AbstractDocGenerator.class).to(FeatureDocGenerator.class);
  133. binder.bind(SignatureHashBuilder.class).to(
  134. JnarioSignatureHashBuilder.class);
  135. binder.bind(JnarioNameProvider.class)
  136. .to(FeatureClassNameProvider.class);
  137. binder.bind(ExecutableProvider.class).to(
  138. FeatureExecutableProvider.class);
  139. binder.bind(Executable2ResultMapping.class).to(
  140. HashBasedSpec2ResultMapping.class);
  141. binder.bind(ImplicitlyImportedFeatures.class).to(
  142. JnarioImplicitlyImportedFeatures.class);
  143. binder.bind(ScopeProviderAccess.class).to(
  144. FeatureScopeProviderAccess.class);
  145. binder.bind(NamesAreUniqueValidationHelper.class).to(
  146. FeatureNamesAreUniqueValidationHelper.class);
  147. binder.bind(boolean.class)
  148. .annotatedWith(
  149. Names.named(CompositeEValidator.USE_EOBJECT_VALIDATOR))
  150. .toInstance(false);
  151. binder.bind(XtendBatchCompiler.class).to(FeatureBatchCompiler.class);
  152. binder.bind(AnnotationProcessor.class).to(JnarioAnnotationProcessor.class);
  153. }
  154. public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder() {
  155. return ExtendedJvmTypesBuilder.class;
  156. }
  157. public Class<? extends JvmModelGenerator> bindJvmModelGenerator() {
  158. return FeatureJvmModelGenerator.class;
  159. }
  160. @Override
  161. public Class<? extends IdentifiableSimpleNameProvider> bindIdentifiableSimpleNameProvider() {
  162. return FeatureIdentifiableSimpleNameProvider.class;
  163. }
  164. public Class<? extends OutputConfigurationProvider> bindOutputConfigurationProvider() {
  165. return DocOutputConfigurationProvider.class;
  166. }
  167. public Class<? extends IFilePostProcessor> bindPostProcessor() {
  168. return TraceAwarePostProcessor.class;
  169. }
  170. @Override
  171. public Class<? extends ILinkingService> bindILinkingService() {
  172. return FeatureLinkingService.class;
  173. }
  174. public Class<? extends JnarioBatchCompiler> bindJnarioBatchCompiler() {
  175. return FeatureBatchCompiler.class;
  176. }
  177. /**********************************************************************************/
  178. public Class<? extends XExpressionHelper> bindXExpressionHelper() {
  179. return JnarioExpressionHelper.class;
  180. }
  181. @Override
  182. public Class<? extends IValueConverterService> bindIValueConverterService() {
  183. return FeatureValueConverterService.class;
  184. }
  185. @Override
  186. public void configureIScopeProviderDelegate(Binder binder) {
  187. binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
  188. .to(FeatureImportedNamespaceScopeProvider.class);
  189. }
  190. @Override
  191. public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
  192. return FeatureQualifiedNameProvider.class;
  193. }
  194. @Override
  195. public Class <? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
  196. return JnarioResourceDescriptionStrategy.class;
  197. }
  198. public Class<? extends JvmModelAssociator> bindJvmModelAssociator() {
  199. return IXtendJvmAssociations.Impl.class;
  200. }
  201. public Class<? extends EarlyExitValidator> bindEarlyExitValidator() {
  202. return XtendEarlyExitValidator.class;
  203. }
  204. public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
  205. return XtendOutputConfigurationProvider.class;
  206. }
  207. @Override
  208. public Class<? extends ILocationInFileProvider> bindILocationInFileProvider() {
  209. return FeatureLocationInFileProvider.class;
  210. }
  211. @Override
  212. public Class<? extends ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
  213. return FeatureLinkingDiagnosticMessageProvider.class;
  214. }
  215. public Class<? extends IImportsConfiguration> bindIImportsConfiguration() {
  216. return XtendImportsConfiguration.class;
  217. }
  218. @Override
  219. public Class<? extends ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
  220. return XtendConfigurableIssueCodes.class;
  221. }
  222. public XtendFactory bindXtendFactory() {
  223. return XtendFactory.eINSTANCE;
  224. }
  225. @Override
  226. public Class<? extends DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
  227. return TypeDeclarationAwareBatchTypeResolver.class;
  228. }
  229. public Class<? extends DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
  230. return XtendReentrantTypeResolver.class;
  231. }
  232. public Class<? extends XbaseCompiler> bindXbaseCompiler() {
  233. return FeatureCompiler.class;
  234. }
  235. public Class<? extends TraceAwarePostProcessor> bindTraceAwarePostProcessor() {
  236. return UnicodeAwarePostProcessor.class;
  237. }
  238. @Override
  239. public Class<? extends ITypeComputer> bindITypeComputer() {
  240. return JnarioTypeComputer.class;
  241. }
  242. public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
  243. return FeatureJvmModelInferrer.class;
  244. }
  245. @Override
  246. public Class<? extends Manager> bindIResourceDescription$Manager() {
  247. return XtendResourceDescriptionManager.class;
  248. }
  249. @Override
  250. public Class<? extends IResourceValidator> bindIResourceValidator() {
  251. return org.eclipse.xtend.core.validation.CachingResourceValidatorImpl.class;
  252. }
  253. @Override
  254. public Class<? extends ILinker> bindILinker() {
  255. return FeatureLazyLinker.class;
  256. }
  257. /**
  258. * @since 2.4.2
  259. */
  260. @Override
  261. public void configureIResourceDescriptions(com.google.inject.Binder binder) {
  262. binder.bind(IResourceDescriptions.class).to(EagerResourceSetBasedResourceDescriptions.class);
  263. }
  264. public Class<? extends AbstractFileSystemSupport> bindAbstractFileSystemSupport() {
  265. return JavaIOFileSystemSupport.class;
  266. }
  267. @Override
  268. public Class<? extends IGenerator> bindIGenerator() {
  269. return XtendGenerator.class;
  270. }
  271. public void configureWorkspaceConfigContribution(Binder binder) {
  272. binder.bind(WorkspaceConfig.class).toProvider(RuntimeWorkspaceConfigProvider.class);
  273. }
  274. public Class<? extends FileLocations> bindFileLocations() {
  275. return FileLocationsImpl.class;
  276. }
  277. public Class<? extends IEObjectDocumentationProvider> bindIEObjectDocumentationProvider() {
  278. return XtendDocumentationProvider.class;
  279. }
  280. @Override
  281. public Class<? extends IParser> bindIParser() {
  282. return CustomFeatureParser.class;
  283. }
  284. public Class<? extends TokenRegionProvider> bindTokenRegionProvider() {
  285. return TokenRegionProvider.class;
  286. }
  287. public Class<? extends IDValueConverter> bindIDValueConverter() {
  288. return JnarioJavaIDValueConverter.class;
  289. }
  290. public Class<? extends NodeModelAccess> bindNodeModelAccess(){
  291. return JnarioNodeModelAccess.class;
  292. }
  293. public Class<? extends IBasicFormatter> bindIBasicFormatter() {
  294. return FeatureFormatter2.class;
  295. }
  296. @Override
  297. public Class<? extends EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
  298. return XtendEObjectAtOffsetHelper.class;
  299. }
  300. public Class<? extends ImplicitReturnFinder> bindImplicitReturnFinder() {
  301. return XtendImplicitReturnFinder.class;
  302. }
  303. public Class<? extends HumanReadableTypeNames> bindHumanReadableTypeNames() {
  304. return LocalClassAwareTypeNames.class;
  305. }
  306. public Class<? extends ConstructorScopes> bindConstructorScopes() {
  307. return AnonymousClassConstructorScopes.class;
  308. }
  309. public Class<? extends ResourceChangeRegistry> bindResourceChangeRegistry() {
  310. return NopResourceChangeRegistry.class;
  311. }
  312. }