Skip to content

Commit

Permalink
Merge pull request #2949 from florianpirchner/issue_2945
Browse files Browse the repository at this point in the history
issue 2945 - add "writeStorageResources" to xtext-maven-plugin
  • Loading branch information
LorenzoBettini committed Mar 12, 2024
2 parents 03146da + ab8618a commit 9ffc0c9
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 7 deletions.
Expand Up @@ -26,6 +26,9 @@
import org.eclipse.xtext.builder.standalone.StandaloneBuilder;
import org.eclipse.xtext.builder.standalone.compiler.CompilerConfiguration;
import org.eclipse.xtext.builder.standalone.compiler.IJavaCompiler;
import org.eclipse.xtext.resource.IResourceDescription;
import org.eclipse.xtext.resource.persistence.IResourceStorageFacade;
import org.eclipse.xtext.resource.persistence.StorageAwareResource;
import org.eclipse.xtext.util.Strings;
import org.eclipse.xtext.xbase.lib.IterableExtensions;

Expand Down Expand Up @@ -87,10 +90,10 @@ public String getEncoding() {
private List<ProjectMapping> projectMappings;

@Parameter(property = "xtext.generator.skip", defaultValue = "false")
private Boolean skip;
private boolean skip;

@Parameter(defaultValue = "true")
private Boolean failOnValidationError;
private boolean failOnValidationError = true;

@Parameter(property = "maven.compiler.source", defaultValue = "11")
private String compilerSourceLevel;
Expand All @@ -99,10 +102,10 @@ public String getEncoding() {
private String compilerTargetLevel;

@Parameter(defaultValue = "false")
private Boolean compilerSkipAnnotationProcessing;
private boolean compilerSkipAnnotationProcessing;

@Parameter(defaultValue = "false")
private Boolean compilerPreserveInformationAboutFormalParameters;
private boolean compilerPreserveInformationAboutFormalParameters;

/**
* RegEx expression to filter class path during model files look up
Expand All @@ -121,22 +124,32 @@ public String getEncoding() {
* the platform resource map automatically
*/
@Parameter(defaultValue = "false")
private Boolean autoFillPlatformResourceMap = Boolean.FALSE;
private boolean autoFillPlatformResourceMap;

/**
* Automatically add all output directories of all configured languages to the
* compile source roots needed by maven-compiler
*/
@Parameter(defaultValue = "true")
private Boolean addOutputDirectoriesToCompileSourceRoots = Boolean.TRUE;
private boolean addOutputDirectoriesToCompileSourceRoots = true;

/**
* Track dependencies between model files and perform incremental builds when re-running
* the build after some files were touched.
*/
@Parameter(defaultValue = "false")
private Boolean incrementalXtextBuild = Boolean.FALSE;
private boolean incrementalXtextBuild;

/**
* Whether to use the {@link StorageAwareResource} to write the semantic model, the
* {@link IResourceDescription resource description} and optionally the node model to a ResourceStorage.<br>
* For details see {@link StorageAwareResource} and {@link IResourceStorageFacade}.
*
* @since 2.35
*/
@Parameter(defaultValue = "false")
private boolean writeStorageResources;

@Parameter( readonly = true, defaultValue = "${plugin.artifacts}" )
private List<Artifact> pluginDependencies;

Expand Down Expand Up @@ -184,6 +197,7 @@ protected void internalExecute() throws MojoExecutionException {
builder.setTempDir(createTempDir().getAbsolutePath());
builder.setDebugLog(getLog().isDebugEnabled());
builder.setIncrementalBuild(incrementalXtextBuild);
builder.setWriteStorageResources(writeStorageResources);
if (clusteringConfig != null)
builder.setClusteringConfig(clusteringConfig.convertToStandaloneConfig());
configureCompiler(builder.getCompiler());
Expand Down
Expand Up @@ -168,6 +168,20 @@ public void simpleLangIncremental() throws Exception {
verifier.verifyFileContentMatches(refModelOutput, "People to greet\\: Test");
verifier.verifyFileContentMatches(modelOutput, Pattern.quote(modelOutputContent));
}

@Test
public void simpleLangWriteStorageResources() throws Exception {
String project = "simple-lang-write-storage-resources";
Verifier verifier = verifyErrorFreeLog(project);
verifier.verifyFileContentMatches(verifier.getBasedir() + "/src-gen/Model.nojdt.txt",
"People to greet\\: maven");
verifier.verifyFileContentMatches(verifier.getBasedir() + "/src-gen/RefModel.nojdt.txt",
"People to greet\\: Test");

verifier.verifyFilePresent(verifier.getBasedir() + "/src-gen/.Model.nojdtbin");
verifier.verifyFilePresent(verifier.getBasedir() + "/src-gen/.RefModel.nojdtbin");
}


@Test
public void mavenConfiguration() throws Exception {
Expand Down
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.eclipse.xtext</groupId>
<artifactId>xtext-maven-plugin-it</artifactId>
<version>IT-SNAPSHOT</version>
</parent>

<artifactId>simple-lang-write-storage-resources</artifactId>

<build>
<plugins>
<plugin>
<groupId>org.eclipse.xtext</groupId>
<artifactId>xtext-maven-plugin</artifactId>
<configuration>
<languages>
<language>
<javaSupport>false</javaSupport>
<setup>org.eclipse.xtext.testlanguages.noJdt.writeStorageResources.NoJdtTestLanguageWriteStoragResourcesStandaloneSetup</setup>
</language>
</languages>
<writeStorageResources>true</writeStorageResources>
</configuration>
<dependencies>
<dependency>
<groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext.testlanguages</artifactId>
<version>${xtext-version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

</project>
@@ -0,0 +1 @@
Hello maven!
@@ -0,0 +1 @@
Hello Test (from maven)!
1 change: 1 addition & 0 deletions org.eclipse.xtext.testlanguages/META-INF/MANIFEST.MF
Expand Up @@ -77,6 +77,7 @@ Export-Package: org.eclipse.xtext.testlanguages;version="2.35.0";x-internal:=tru
org.eclipse.xtext.testlanguages.noJdt.serializer;version="2.35.0",
org.eclipse.xtext.testlanguages.noJdt.services;version="2.35.0",
org.eclipse.xtext.testlanguages.noJdt.validation;version="2.35.0",
org.eclipse.xtext.testlanguages.noJdt.writeStorageResources;version="2.35.0",
org.eclipse.xtext.testlanguages.xtextgrammar;version="2.35.0",
org.eclipse.xtext.testlanguages.xtextgrammar.parser.antlr;version="2.35.0",
org.eclipse.xtext.testlanguages.xtextgrammar.parser.antlr.internal;version="2.35.0",
Expand Down
@@ -0,0 +1,18 @@
package org.eclipse.xtext.testlanguages.noJdt.writeStorageResources;

import org.eclipse.xtext.testlanguages.noJdt.NoJdtTestLanguageStandaloneSetupGenerated;

import com.google.inject.Guice;
import com.google.inject.Injector;

/**
* Initialization support for running Xtext languages
* without equinox extension registry
*/
public class NoJdtTestLanguageWriteStoragResourcesStandaloneSetup extends NoJdtTestLanguageStandaloneSetupGenerated{

public Injector createInjector() {
return Guice.createInjector(new NoJdtTestLanguageWriteStorageResourcesRuntimeModule());
}
}

@@ -0,0 +1,29 @@
package org.eclipse.xtext.testlanguages.noJdt.writeStorageResources;

import org.eclipse.xtext.generator.AbstractFileSystemAccess2;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.persistence.IResourceStorageFacade;
import org.eclipse.xtext.resource.persistence.ResourceStorageFacade;
import org.eclipse.xtext.resource.persistence.StorageAwareResource;

/**
* Use this class to register components to be used at runtime / without the
* Equinox extension registry.
*/
public class NoJdtTestLanguageWriteStorageResourcesRuntimeModule
extends org.eclipse.xtext.testlanguages.noJdt.AbstractNoJdtTestLanguageRuntimeModule {

public Class<? extends IResourceStorageFacade> bindIResourceStorageFacade() {
return ResourceStorageFacade.class;
}

public Class<? extends AbstractFileSystemAccess2> bindAbstractFileSystemAccess2() {
return JavaIoFileSystemAccess.class;
}

@Override
public Class<? extends XtextResource> bindXtextResource() {
return StorageAwareResource.class;
}
}

0 comments on commit 9ffc0c9

Please sign in to comment.