PageRenderTime 69ms CodeModel.GetById 39ms RepoModel.GetById 1ms app.codeStats 0ms

/plugins/org.jnario.spec/src/org/jnario/spec/SpecRuntimeModule.java

http://github.com/bmwcarit/Jnario
Java | 360 lines | 287 code | 56 blank | 17 comment | 0 complexity | 7de141f364cae113f09e70bf19a4c924 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.spec;
  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.jvmmodel.SyntheticNameClashResolver;
  19. import org.eclipse.xtend.core.linking.XtendEObjectAtOffsetHelper;
  20. import org.eclipse.xtend.core.linking.XtendLinkingDiagnosticMessageProvider;
  21. import org.eclipse.xtend.core.macro.AnnotationProcessor;
  22. import org.eclipse.xtend.core.macro.declaration.NopResourceChangeRegistry;
  23. import org.eclipse.xtend.core.macro.declaration.ResourceChangeRegistry;
  24. import org.eclipse.xtend.core.parser.antlr.internal.FlexerFactory;
  25. import org.eclipse.xtend.core.resource.XtendLocationInFileProvider;
  26. import org.eclipse.xtend.core.resource.XtendResourceDescriptionManager;
  27. import org.eclipse.xtend.core.scoping.AnonymousClassConstructorScopes;
  28. import org.eclipse.xtend.core.typesystem.LocalClassAwareTypeNames;
  29. import org.eclipse.xtend.core.typesystem.TypeDeclarationAwareBatchTypeResolver;
  30. import org.eclipse.xtend.core.validation.XtendConfigurableIssueCodes;
  31. import org.eclipse.xtend.core.validation.XtendEarlyExitValidator;
  32. import org.eclipse.xtend.core.validation.XtendImplicitReturnFinder;
  33. import org.eclipse.xtend.core.xtend.XtendFactory;
  34. import org.eclipse.xtend.lib.macro.file.FileLocations;
  35. import org.eclipse.xtend.lib.macro.file.MutableFileSystemSupport;
  36. import org.eclipse.xtext.common.types.descriptions.JvmDeclaredTypeSignatureHashProvider.SignatureHashBuilder;
  37. import org.eclipse.xtext.conversion.IValueConverterService;
  38. import org.eclipse.xtext.conversion.impl.IDValueConverter;
  39. import org.eclipse.xtext.documentation.IEObjectDocumentationProvider;
  40. import org.eclipse.xtext.generator.IFilePostProcessor;
  41. import org.eclipse.xtext.generator.IGenerator;
  42. import org.eclipse.xtext.generator.IOutputConfigurationProvider;
  43. import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
  44. import org.eclipse.xtext.generator.OutputConfigurationProvider;
  45. import org.eclipse.xtext.linking.ILinker;
  46. import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider;
  47. import org.eclipse.xtext.linking.ILinkingService;
  48. import org.eclipse.xtext.naming.IQualifiedNameProvider;
  49. import org.eclipse.xtext.parser.IParser;
  50. import org.eclipse.xtext.resource.EObjectAtOffsetHelper;
  51. import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
  52. import org.eclipse.xtext.resource.ILocationInFileProvider;
  53. import org.eclipse.xtext.resource.IResourceDescription.Manager;
  54. import org.eclipse.xtext.resource.IResourceDescriptions;
  55. import org.eclipse.xtext.resource.impl.EagerResourceSetBasedResourceDescriptions;
  56. import org.eclipse.xtext.scoping.IScopeProvider;
  57. import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
  58. import org.eclipse.xtext.validation.CompositeEValidator;
  59. import org.eclipse.xtext.validation.ConfigurableIssueCodesProvider;
  60. import org.eclipse.xtext.validation.IResourceValidator;
  61. import org.eclipse.xtext.xbase.XbaseFactory;
  62. import org.eclipse.xtext.xbase.compiler.JvmModelGenerator;
  63. import org.eclipse.xtext.xbase.compiler.XbaseCompiler;
  64. import org.eclipse.xtext.xbase.compiler.output.TraceAwarePostProcessor;
  65. import org.eclipse.xtext.xbase.file.AbstractFileSystemSupport;
  66. import org.eclipse.xtext.xbase.file.FileLocationsImpl;
  67. import org.eclipse.xtext.xbase.file.JavaIOFileSystemSupport;
  68. import org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider;
  69. import org.eclipse.xtext.xbase.file.WorkspaceConfig;
  70. import org.eclipse.xtext.xbase.formatting.IBasicFormatter;
  71. import org.eclipse.xtext.xbase.formatting.NodeModelAccess;
  72. import org.eclipse.xtext.xbase.imports.IImportsConfiguration;
  73. import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
  74. import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator;
  75. import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
  76. import org.eclipse.xtext.xbase.scoping.batch.ConstructorScopes;
  77. import org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedFeatures;
  78. import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
  79. import org.eclipse.xtext.xbase.typesystem.computation.ITypeComputer;
  80. import org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver;
  81. import org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver;
  82. import org.eclipse.xtext.xbase.typesystem.util.HumanReadableTypeNames;
  83. import org.eclipse.xtext.xbase.util.XExpressionHelper;
  84. import org.eclipse.xtext.xbase.validation.EarlyExitValidator;
  85. import org.eclipse.xtext.xbase.validation.ImplicitReturnFinder;
  86. import org.jnario.compiler.JnarioCompiler;
  87. import org.jnario.compiler.JnarioExpressionHelper;
  88. import org.jnario.conversion.JnarioJavaIDValueConverter;
  89. import org.jnario.doc.AbstractDocGenerator;
  90. import org.jnario.doc.DocOutputConfigurationProvider;
  91. import org.jnario.documentation.XtendDocumentationProvider;
  92. import org.jnario.formatter.JnarioNodeModelAccess;
  93. import org.jnario.generator.JnarioJavaIoFileSystemAccess;
  94. import org.jnario.jvmmodel.ExecutableProvider;
  95. import org.jnario.jvmmodel.ExtendedJvmTypesBuilder;
  96. import org.jnario.jvmmodel.JnarioNameProvider;
  97. import org.jnario.jvmmodel.JnarioSignatureHashBuilder;
  98. import org.jnario.linking.JnarioLinkingService;
  99. import org.jnario.macro.JnarioAnnotationProcessor;
  100. import org.jnario.report.Executable2ResultMapping;
  101. import org.jnario.report.HashBasedSpec2ResultMapping;
  102. import org.jnario.scoping.JnarioImplicitlyImportedFeatures;
  103. import org.jnario.spec.compiler.SpecBatchCompiler;
  104. import org.jnario.spec.conversion.SpecValueConverterService;
  105. import org.jnario.spec.doc.SpecDocGenerator;
  106. import org.jnario.spec.formatting.SpecFormatter;
  107. import org.jnario.spec.jvmmodel.SpecExecutableProvider;
  108. import org.jnario.spec.jvmmodel.SpecJvmModelGenerator;
  109. import org.jnario.spec.jvmmodel.SpecJvmModelInferrer;
  110. import org.jnario.spec.jvmmodel.SpecLazyLinker;
  111. import org.jnario.spec.jvmmodel.SpecSyntheticNameClashResolver;
  112. import org.jnario.spec.naming.ExampleNameProvider;
  113. import org.jnario.spec.naming.SpecQualifiedNameProvider;
  114. import org.jnario.spec.scoping.SpecBatchScopeProvider;
  115. import org.jnario.spec.scoping.SpecImportedNamespaceScopeProvider;
  116. import org.jnario.spec.scoping.SpecResourceDescriptionStrategy;
  117. import org.jnario.typing.JnarioTypeComputer;
  118. import org.jnario.typing.JnarioTypeResolver;
  119. import com.google.inject.Binder;
  120. import com.google.inject.Scopes;
  121. import com.google.inject.name.Names;
  122. /**
  123. * @author Sebastian Benz - Initial contribution and API
  124. */
  125. @SuppressWarnings("restriction")
  126. public class SpecRuntimeModule extends org.jnario.spec.AbstractSpecRuntimeModule {
  127. @Override
  128. public void configure(Binder binder) {
  129. super.configure(binder);
  130. binder.bind(FlexerFactory.class).in(Scopes.SINGLETON);
  131. binder.bind(AbstractDocGenerator.class).to(SpecDocGenerator.class);
  132. binder.bind(SignatureHashBuilder.class).to(JnarioSignatureHashBuilder.class);
  133. binder.bind(SyntheticNameClashResolver.class).to(SpecSyntheticNameClashResolver.class);
  134. binder.bind(JnarioNameProvider.class).to(ExampleNameProvider.class);
  135. binder.bind(ExecutableProvider.class).to(SpecExecutableProvider.class);
  136. binder.bind(Executable2ResultMapping.class).to(HashBasedSpec2ResultMapping.class);
  137. binder.bind(ImplicitlyImportedFeatures.class).to(JnarioImplicitlyImportedFeatures.class);
  138. binder.bind(boolean.class).annotatedWith(
  139. Names.named(CompositeEValidator.USE_EOBJECT_VALIDATOR)).toInstance(false);
  140. binder.bind(XtendBatchCompiler.class).to(SpecBatchCompiler.class);
  141. }
  142. public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder(){
  143. return ExtendedJvmTypesBuilder.class;
  144. }
  145. public Class<? extends JvmModelGenerator> bindJvmModelGenerator(){
  146. return SpecJvmModelGenerator.class;
  147. }
  148. public Class<? extends OutputConfigurationProvider> bindOutputConfigurationProvider() {
  149. return DocOutputConfigurationProvider.class;
  150. }
  151. public Class<? extends IFilePostProcessor> bindPostProcessor() {
  152. return TraceAwarePostProcessor.class;
  153. }
  154. @Override
  155. public Class<? extends ILinkingService> bindILinkingService() {
  156. return JnarioLinkingService.class;
  157. }
  158. public Class<? extends JavaIoFileSystemAccess> bindJavaIoFileSystemAccess() {
  159. return JnarioJavaIoFileSystemAccess.class;
  160. }
  161. public Class<? extends org.jnario.compiler.JnarioBatchCompiler> bindJnarioBatchCompiler(){
  162. return SpecBatchCompiler.class;
  163. }
  164. public XbaseFactory bindXbaseFactory() {
  165. return XbaseFactory.eINSTANCE;
  166. }
  167. @Override
  168. public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
  169. return SpecBatchScopeProvider.class;
  170. }
  171. /**********************************************************************/
  172. public Class<? extends XExpressionHelper> bindXExpressionHelper() {
  173. return JnarioExpressionHelper.class;
  174. }
  175. @Override
  176. public Class<? extends IValueConverterService> bindIValueConverterService() {
  177. return SpecValueConverterService.class;
  178. }
  179. @Override
  180. public void configureIScopeProviderDelegate(Binder binder) {
  181. binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE))
  182. .to(SpecImportedNamespaceScopeProvider.class);
  183. }
  184. @Override
  185. public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
  186. return SpecQualifiedNameProvider.class;
  187. }
  188. @Override
  189. public Class <? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
  190. return SpecResourceDescriptionStrategy.class;
  191. }
  192. public Class<? extends JvmModelAssociator> bindJvmModelAssociator() {
  193. return IXtendJvmAssociations.Impl.class;
  194. }
  195. public Class<? extends EarlyExitValidator> bindEarlyExitValidator() {
  196. return XtendEarlyExitValidator.class;
  197. }
  198. public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
  199. return XtendOutputConfigurationProvider.class;
  200. }
  201. @Override
  202. public Class<? extends ILocationInFileProvider> bindILocationInFileProvider() {
  203. return XtendLocationInFileProvider.class;
  204. }
  205. @Override
  206. public Class<? extends ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
  207. return XtendLinkingDiagnosticMessageProvider.class;
  208. }
  209. public Class<? extends IBasicFormatter> bindIBasicFormatter() {
  210. return SpecFormatter.class;
  211. }
  212. public Class<? extends IImportsConfiguration> bindIImportsConfiguration() {
  213. return XtendImportsConfiguration.class;
  214. }
  215. @Override
  216. public Class<? extends ConfigurableIssueCodesProvider> bindConfigurableIssueCodesProvider() {
  217. return XtendConfigurableIssueCodes.class;
  218. }
  219. public XtendFactory bindXtendFactory() {
  220. return XtendFactory.eINSTANCE;
  221. }
  222. @Override
  223. public Class<? extends DefaultBatchTypeResolver> bindDefaultBatchTypeResolver() {
  224. return TypeDeclarationAwareBatchTypeResolver.class;
  225. }
  226. @Override
  227. public Class<? extends DefaultReentrantTypeResolver> bindDefaultReentrantTypeResolver() {
  228. return JnarioTypeResolver.class;
  229. }
  230. public Class<? extends XbaseCompiler> bindXbaseCompiler() {
  231. return JnarioCompiler.class;
  232. }
  233. public Class<? extends TraceAwarePostProcessor> bindTraceAwarePostProcessor() {
  234. return UnicodeAwarePostProcessor.class;
  235. }
  236. @Override
  237. public Class<? extends ITypeComputer> bindITypeComputer() {
  238. return JnarioTypeComputer.class;
  239. }
  240. public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
  241. return SpecJvmModelInferrer.class;
  242. }
  243. @Override
  244. public Class<? extends Manager> bindIResourceDescription$Manager() {
  245. return XtendResourceDescriptionManager.class;
  246. }
  247. @Override
  248. public Class<? extends IResourceValidator> bindIResourceValidator() {
  249. return org.eclipse.xtend.core.validation.CachingResourceValidatorImpl.class;
  250. }
  251. @Override
  252. public Class<? extends ILinker> bindILinker() {
  253. return SpecLazyLinker.class;
  254. }
  255. /**
  256. * @since 2.4.2
  257. */
  258. @Override
  259. public void configureIResourceDescriptions(com.google.inject.Binder binder) {
  260. binder.bind(IResourceDescriptions.class).to(EagerResourceSetBasedResourceDescriptions.class);
  261. }
  262. public Class<? extends AbstractFileSystemSupport> bindAbstractFileSystemSupport() {
  263. return JavaIOFileSystemSupport.class;
  264. }
  265. @Override
  266. public Class<? extends IGenerator> bindIGenerator() {
  267. return XtendGenerator.class;
  268. }
  269. public void configureWorkspaceConfigContribution(Binder binder) {
  270. binder.bind(WorkspaceConfig.class).toProvider(RuntimeWorkspaceConfigProvider.class);
  271. }
  272. public Class<? extends FileLocations> bindFileLocations() {
  273. return FileLocationsImpl.class;
  274. }
  275. public Class<? extends IEObjectDocumentationProvider> bindIEObjectDocumentationProvider() {
  276. return XtendDocumentationProvider.class;
  277. }
  278. @Override
  279. public Class<? extends IParser> bindIParser() {
  280. return SpecParserWithoutPartialParsing.class;
  281. }
  282. public Class<? extends IDValueConverter> bindIDValueConverter() {
  283. return JnarioJavaIDValueConverter.class;
  284. }
  285. public Class<? extends NodeModelAccess> bindNodeModelAccess(){
  286. return JnarioNodeModelAccess.class;
  287. }
  288. @Override
  289. public Class<? extends EObjectAtOffsetHelper> bindEObjectAtOffsetHelper() {
  290. return XtendEObjectAtOffsetHelper.class;
  291. }
  292. public Class<? extends ImplicitReturnFinder> bindImplicitRetrnFinder() {
  293. return XtendImplicitReturnFinder.class;
  294. }
  295. public Class<? extends HumanReadableTypeNames> bindHumanReadableTypeNames() {
  296. return LocalClassAwareTypeNames.class;
  297. }
  298. public Class<? extends ConstructorScopes> bindConstructorScopes() {
  299. return AnonymousClassConstructorScopes.class;
  300. }
  301. public Class<? extends ResourceChangeRegistry> bindResourceChangeRegistry() {
  302. return NopResourceChangeRegistry.class;
  303. }
  304. }