Search in sources :

Example 1 with OutputConfigurationProvider

use of org.eclipse.xtext.generator.OutputConfigurationProvider in project xtext-eclipse by eclipse.

the class AbstractBuilderParticipantTest method withOutputConfiguration.

protected void withOutputConfiguration(final Procedures.Procedure1<OutputConfiguration> outputConfigurationInitializer, Procedures.Procedure0 test) {
    OutputConfigurationProvider outputConfigurationProvider = new OutputConfigurationProvider() {

        @Override
        public Set<OutputConfiguration> getOutputConfigurations() {
            final Set<OutputConfiguration> result = super.getOutputConfigurations();
            outputConfigurationInitializer.apply(result.iterator().next());
            return result;
        }
    };
    try {
        BuilderPreferenceAccess.Initializer initializer = new BuilderPreferenceAccess.Initializer();
        initializer.setOutputConfigurationProvider(outputConfigurationProvider);
        initializer.initialize(preferenceStoreAccess);
        test.apply();
    } finally {
        BuilderPreferenceAccess.Initializer initializer = new BuilderPreferenceAccess.Initializer();
        initializer.setOutputConfigurationProvider(new OutputConfigurationProvider());
        initializer.initialize(preferenceStoreAccess);
    }
}
Also used : OutputConfiguration(org.eclipse.xtext.generator.OutputConfiguration) OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) EclipseOutputConfigurationProvider(org.eclipse.xtext.builder.EclipseOutputConfigurationProvider) BuilderPreferenceAccess(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess)

Example 2 with OutputConfigurationProvider

use of org.eclipse.xtext.generator.OutputConfigurationProvider in project xtext-eclipse by eclipse.

the class BuilderParticipantTest method testNoOutputFolderCreation.

@Test
public void testNoOutputFolderCreation() throws Exception {
    OutputConfigurationProvider outputConfigurationProvider = new OutputConfigurationProvider() {

        @Override
        public Set<OutputConfiguration> getOutputConfigurations() {
            final Set<OutputConfiguration> result = super.getOutputConfigurations();
            OutputConfiguration configuration = result.iterator().next();
            configuration.setCreateOutputDirectory(false);
            return result;
        }
    };
    BuilderPreferenceAccess.Initializer initializer = new BuilderPreferenceAccess.Initializer();
    initializer.setOutputConfigurationProvider(outputConfigurationProvider);
    initializer.initialize(preferenceStoreAccess);
    IJavaProject project = createJavaProject("foo");
    addNature(project.getProject(), XtextProjectHelper.NATURE_ID);
    IFolder folder = project.getProject().getFolder("src");
    IFile file = folder.getFile("Foo" + F_EXT);
    file.create(new StringInputStream("object Foo"), true, monitor());
    build();
    final IFile generatedFile = project.getProject().getFile("./src-gen/Foo.txt");
    assertFalse(generatedFile.exists());
}
Also used : StringInputStream(org.eclipse.xtext.util.StringInputStream) IJavaProject(org.eclipse.jdt.core.IJavaProject) IFile(org.eclipse.core.resources.IFile) OutputConfiguration(org.eclipse.xtext.generator.OutputConfiguration) OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) BuilderPreferenceAccess(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess) IFolder(org.eclipse.core.resources.IFolder) Test(org.junit.Test)

Example 3 with OutputConfigurationProvider

use of org.eclipse.xtext.generator.OutputConfigurationProvider 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)

Example 4 with OutputConfigurationProvider

use of org.eclipse.xtext.generator.OutputConfigurationProvider in project xtext-eclipse by eclipse.

the class BuilderParticipantTest method testNoCleanUpNoDerived.

@Test
public void testNoCleanUpNoDerived() throws Exception {
    OutputConfigurationProvider outputConfigurationProvider = new OutputConfigurationProvider() {

        @Override
        public Set<OutputConfiguration> getOutputConfigurations() {
            final Set<OutputConfiguration> result = super.getOutputConfigurations();
            OutputConfiguration configuration = result.iterator().next();
            configuration.setCanClearOutputDirectory(false);
            configuration.setCleanUpDerivedResources(false);
            configuration.setSetDerivedProperty(false);
            return result;
        }
    };
    BuilderPreferenceAccess.Initializer initializer = new BuilderPreferenceAccess.Initializer();
    initializer.setOutputConfigurationProvider(outputConfigurationProvider);
    initializer.initialize(preferenceStoreAccess);
    IJavaProject project = createJavaProject("foo");
    addNature(project.getProject(), XtextProjectHelper.NATURE_ID);
    IFolder folder = project.getProject().getFolder("src");
    IFile file = folder.getFile("Foo" + F_EXT);
    file.create(new StringInputStream("object Foo"), true, monitor());
    build();
    IFile generatedFileFoo = project.getProject().getFile("./src-gen/Foo.txt");
    assertTrue(generatedFileFoo.exists());
    assertFalse(generatedFileFoo.isDerived());
    assertTrue(generatedFileFoo.findMarkers(DerivedResourceMarkers.MARKER_ID, false, IResource.DEPTH_ZERO).length == 1);
    assertEquals("object Foo", readFile(generatedFileFoo).trim());
    file.setContents(new StringInputStream("object Bar"), true, true, monitor());
    build();
    assertTrue(generatedFileFoo.exists());
    IFile generatedFileBar = project.getProject().getFile("./src-gen/Bar.txt");
    assertTrue(generatedFileBar.exists());
    assertFalse(generatedFileBar.isDerived());
    assertTrue(generatedFileBar.findMarkers(DerivedResourceMarkers.MARKER_ID, false, IResource.DEPTH_ZERO).length == 1);
    assertEquals("object Bar", readFile(generatedFileBar).trim());
    file.delete(true, monitor());
    build();
    assertTrue(generatedFileBar.exists());
    disableAutobuild(() -> {
        cleanBuild();
        assertTrue(generatedFileBar.exists());
    });
}
Also used : StringInputStream(org.eclipse.xtext.util.StringInputStream) IJavaProject(org.eclipse.jdt.core.IJavaProject) IFile(org.eclipse.core.resources.IFile) OutputConfiguration(org.eclipse.xtext.generator.OutputConfiguration) OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) BuilderPreferenceAccess(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess) IFolder(org.eclipse.core.resources.IFolder) Test(org.junit.Test)

Example 5 with OutputConfigurationProvider

use of org.eclipse.xtext.generator.OutputConfigurationProvider in project xtext-eclipse by eclipse.

the class BuilderParticipantTest method resetPrefs.

@After
public void resetPrefs() {
    BuilderPreferenceAccess.Initializer initializer = new BuilderPreferenceAccess.Initializer();
    initializer.setOutputConfigurationProvider(new OutputConfigurationProvider());
    initializer.initialize(preferenceStoreAccess);
}
Also used : OutputConfigurationProvider(org.eclipse.xtext.generator.OutputConfigurationProvider) BuilderPreferenceAccess(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess) After(org.junit.After)

Aggregations

OutputConfigurationProvider (org.eclipse.xtext.generator.OutputConfigurationProvider)6 OutputConfiguration (org.eclipse.xtext.generator.OutputConfiguration)5 BuilderPreferenceAccess (org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess)4 IFile (org.eclipse.core.resources.IFile)2 IFolder (org.eclipse.core.resources.IFolder)2 IJavaProject (org.eclipse.jdt.core.IJavaProject)2 StringInputStream (org.eclipse.xtext.util.StringInputStream)2 Test (org.junit.Test)2 Injector (com.google.inject.Injector)1 IOException (java.io.IOException)1 Path (java.nio.file.Path)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 URI (org.eclipse.emf.common.util.URI)1 ProjectConfigSnapshot (org.eclipse.n4js.xtext.workspace.ProjectConfigSnapshot)1 ISetup (org.eclipse.xtext.ISetup)1 EclipseOutputConfigurationProvider (org.eclipse.xtext.builder.EclipseOutputConfigurationProvider)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