use of org.eclipse.xtext.ISetup in project xtext-extras by eclipse.
the class LanguageAccessFactory method createLanguageAccess.
public Map<String, LanguageAccess> createLanguageAccess(List<? extends ILanguageConfiguration> languageConfigs, ClassLoader compilerClassLoder) {
Map<String, LanguageAccess> result = new HashMap<String, LanguageAccess>();
for (ILanguageConfiguration languageGenConf : languageConfigs) {
ISetup setup;
try {
Class<?> loadClass = compilerClassLoder.loadClass(languageGenConf.getSetup());
if (!ISetup.class.isAssignableFrom(loadClass)) {
throw new IllegalArgumentException("Language setup class " + languageGenConf.getSetup() + " must implement " + ISetup.class.getName());
}
setup = (ISetup) loadClass.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new IllegalStateException("Failed to load language setup for class '" + languageGenConf.getSetup() + "'.", e);
}
Injector injector = setup.createInjectorAndDoEMFRegistration();
IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
FileExtensionProvider fileExtensionProvider = injector.getInstance(FileExtensionProvider.class);
LanguageAccess languageAccess = new LanguageAccess(languageGenConf.getOutputConfigurations(), serviceProvider, languageGenConf.isJavaSupport());
for (String extension : fileExtensionProvider.getFileExtensions()) {
result.put(extension, languageAccess);
}
}
return result;
}
Aggregations