Search in sources :

Example 1 with Language

use of org.eclipse.xtext.maven.Language in project xtext-maven by eclipse.

the class AbstractInstallDebugInfoMojo method execute.

@Override
public void execute() throws MojoExecutionException {
    synchronized (lock) {
        new MavenLog4JConfigurator().configureLog4j(getLog());
        Injector injector = Guice.createInjector(new MavenStandaloneBuilderModule());
        injector.injectMembers(this);
        for (Language language : getLanguages()) {
            Set<OutputConfiguration> outputConfigurations = language.getOutputConfigurations();
            if (outputConfigurations == null) {
                getLog().warn("No output configurations available for language " + language.getSetup() + ", assuming default layout and using SMAP trace.");
                outputConfigurations = new OutputConfigurationProvider().getOutputConfigurations();
            }
            try {
                Class<?> setup = getClass().getClassLoader().loadClass(language.getSetup());
                ISetup languageSetup = (ISetup) setup.getDeclaredConstructor().newInstance();
                Injector languageInjector = languageSetup.createInjectorAndDoEMFRegistration();
                FileExtensionProvider fileExtensionProvider = languageInjector.getInstance(FileExtensionProvider.class);
                TraceFileNameProvider traceFileNameProvider = languageInjector.getInstance(TraceFileNameProvider.class);
                for (OutputConfiguration config : outputConfigurations) {
                    ITraceToBytecodeInstaller traceInstaller = getTraceInstaller(config);
                    List<Trace> traces = createTraceInformation(getOutputDirectories(config), traceFileNameProvider);
                    installTraces(fileExtensionProvider.getFileExtensions(), traceInstaller, traces, traceFileNameProvider);
                }
            } catch (Exception e) {
                throw new MojoExecutionException("Failed to install traces for " + language.getSetup(), e);
            }
        }
    }
}
Also used : MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) MavenLog4JConfigurator(org.eclipse.xtext.maven.MavenLog4JConfigurator) ISetup(org.eclipse.xtext.ISetup) OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) FileExtensionProvider(org.eclipse.xtext.resource.FileExtensionProvider) MavenStandaloneBuilderModule(org.eclipse.xtext.maven.MavenStandaloneBuilderModule) IOException(java.io.IOException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) ITraceToBytecodeInstaller(org.eclipse.xtext.generator.trace.ITraceToBytecodeInstaller) TraceFileNameProvider(org.eclipse.xtext.generator.trace.TraceFileNameProvider) Language(org.eclipse.xtext.maven.Language) Injector(com.google.inject.Injector) OutputConfiguration(org.eclipse.xtext.generator.OutputConfiguration)

Aggregations

Injector (com.google.inject.Injector)1 IOException (java.io.IOException)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 ISetup (org.eclipse.xtext.ISetup)1 OutputConfiguration (org.eclipse.xtext.generator.OutputConfiguration)1 OutputConfigurationProvider (org.eclipse.xtext.generator.OutputConfigurationProvider)1 ITraceToBytecodeInstaller (org.eclipse.xtext.generator.trace.ITraceToBytecodeInstaller)1 TraceFileNameProvider (org.eclipse.xtext.generator.trace.TraceFileNameProvider)1 Language (org.eclipse.xtext.maven.Language)1 MavenLog4JConfigurator (org.eclipse.xtext.maven.MavenLog4JConfigurator)1 MavenStandaloneBuilderModule (org.eclipse.xtext.maven.MavenStandaloneBuilderModule)1 FileExtensionProvider (org.eclipse.xtext.resource.FileExtensionProvider)1