/** * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * See the NOTICE file distributed with this work for additional * information regarding copyright ownership. */ package org.thingml.xtext; import com.google.inject.Binder; import com.google.inject.Provider; import com.google.inject.name.Names; import java.util.Properties; import org.eclipse.xtext.Constants; import org.eclipse.xtext.IGrammarAccess; import org.eclipse.xtext.generator.IGenerator2; import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; import org.eclipse.xtext.naming.IQualifiedNameProvider; import org.eclipse.xtext.parser.IParser; import org.eclipse.xtext.parser.ITokenToStringConverter; import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider; import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter; import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider; import org.eclipse.xtext.parser.antlr.ITokenDefProvider; import org.eclipse.xtext.parser.antlr.Lexer; import org.eclipse.xtext.parser.antlr.LexerBindings; import org.eclipse.xtext.parser.antlr.LexerProvider; import org.eclipse.xtext.resource.IContainer; import org.eclipse.xtext.resource.IResourceDescriptions; import org.eclipse.xtext.resource.containers.IAllContainersState; import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider; import org.eclipse.xtext.resource.containers.StateBasedContainerManager; import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions; import org.eclipse.xtext.scoping.IGlobalScopeProvider; import org.eclipse.xtext.scoping.IScopeProvider; import org.eclipse.xtext.scoping.IgnoreCaseLinking; import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider; import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider; import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; import org.eclipse.xtext.serializer.ISerializer; import org.eclipse.xtext.serializer.impl.Serializer; import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer; import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer; import org.eclipse.xtext.service.DefaultRuntimeModule; import org.eclipse.xtext.service.SingletonBinding; import org.thingml.xtext.generator.ThingMLGenerator; import org.thingml.xtext.parser.antlr.ThingMLAntlrTokenFileProvider; import org.thingml.xtext.parser.antlr.ThingMLParser; import org.thingml.xtext.parser.antlr.internal.InternalThingMLLexer; import org.thingml.xtext.scoping.ThingMLScopeProvider; import org.thingml.xtext.serializer.ThingMLSemanticSequencer; import org.thingml.xtext.serializer.ThingMLSyntacticSequencer; import org.thingml.xtext.services.ThingMLGrammarAccess; import org.thingml.xtext.validation.ThingMLValidator; /** * Manual modifications go to {@link ThingMLRuntimeModule}. */ @SuppressWarnings("all") public abstract class AbstractThingMLRuntimeModule extends DefaultRuntimeModule { protected Properties properties = null; @Override public void configure(Binder binder) { properties = tryBindProperties(binder, "org/thingml/xtext/ThingML.properties"); super.configure(binder); } public void configureLanguageName(Binder binder) { binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.thingml.xtext.ThingML"); } public void configureFileExtensions(Binder binder) { if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null) binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("thingml"); } // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 public ClassLoader bindClassLoaderToInstance() { return getClass().getClassLoader(); } // contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2 public Class<? extends IGrammarAccess> bindIGrammarAccess() { return ThingMLGrammarAccess.class; } // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 public Class<? extends ISemanticSequencer> bindISemanticSequencer() { return ThingMLSemanticSequencer.class; } // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() { return ThingMLSyntacticSequencer.class; } // contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2 public Class<? extends ISerializer> bindISerializer() { return Serializer.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Class<? extends IParser> bindIParser() { return ThingMLParser.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Class<? extends ITokenToStringConverter> bindITokenToStringConverter() { return AntlrTokenToStringConverter.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Class<? extends IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() { return ThingMLAntlrTokenFileProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Class<? extends Lexer> bindLexer() { return InternalThingMLLexer.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Class<? extends ITokenDefProvider> bindITokenDefProvider() { return AntlrTokenDefProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public Provider<InternalThingMLLexer> provideInternalThingMLLexer() { return LexerProvider.create(InternalThingMLLexer.class); } // contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2 public void configureRuntimeLexer(Binder binder) { binder.bind(Lexer.class) .annotatedWith(Names.named(LexerBindings.RUNTIME)) .to(InternalThingMLLexer.class); } // contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2 @SingletonBinding(eager=true) public Class<? extends ThingMLValidator> bindThingMLValidator() { return ThingMLValidator.class; } // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 public Class<? extends IScopeProvider> bindIScopeProvider() { return ThingMLScopeProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 public void configureIScopeProviderDelegate(Binder binder) { binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(ImportedNamespaceAwareLocalScopeProvider.class); } // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() { return DefaultGlobalScopeProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2 public void configureIgnoreCaseLinking(Binder binder) { binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false); } // contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2 public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { return DefaultDeclarativeQualifiedNameProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 public Class<? extends IContainer.Manager> bindIContainer$Manager() { return StateBasedContainerManager.class; } // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 public Class<? extends IAllContainersState.Provider> bindIAllContainersState$Provider() { return ResourceSetBasedAllContainersStateProvider.class; } // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 public void configureIResourceDescriptions(Binder binder) { binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class); } // contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2 public void configureIResourceDescriptionsPersisted(Binder binder) { binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class); } // contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2 public Class<? extends IGenerator2> bindIGenerator2() { return ThingMLGenerator.class; } }