From eec2d3b70442999a879aa673e52c1144eec4e351 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 1 Oct 2021 15:52:11 +0200 Subject: feat: skeleton for language to store mapping --- gradle/xtext-common.gradle | 10 ----- language-to-store/build.gradle | 10 +++++ .../language/mapping/PartialModelMapper.java | 11 ++++++ .../mapping/tests/PartialModelMapperTest.xtend | 44 ++++++++++++++++++++++ language/build.gradle | 22 +++++++++-- .../viatra/solver/language/GenerateProblem.mwe2 | 3 ++ settings.gradle | 1 + 7 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 language-to-store/build.gradle create mode 100644 language-to-store/src/main/java/org/eclipse/viatra/solver/language/mapping/PartialModelMapper.java create mode 100644 language-to-store/src/test/java/org/eclipse/viatra/solver/language/mapping/tests/PartialModelMapperTest.xtend diff --git a/gradle/xtext-common.gradle b/gradle/xtext-common.gradle index 4993ed7e..e95bdb46 100644 --- a/gradle/xtext-common.gradle +++ b/gradle/xtext-common.gradle @@ -1,9 +1,5 @@ apply from: "${rootDir}/gradle/java-common.gradle" -dependencies { - implementation platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}") -} - configurations.all { exclude group: 'asm' } @@ -13,20 +9,14 @@ sourceSets { java.srcDirs += ['src/main/xtext-gen'] resources.srcDirs += ['src/main/xtext-gen'] } - test { - java.srcDirs += ['src/test/xtext-gen'] - resources.srcDirs += ['src/test/xtext-gen'] - } } tasks.named('clean') { delete 'src/main/xtext-gen' - delete 'src/test/xtext-gen' } sonarqube.properties { properties['sonar.exclusions'] += [ 'src/main/xtext-gen/**', - 'src/test/xtext-gen/**', ] } diff --git a/language-to-store/build.gradle b/language-to-store/build.gradle new file mode 100644 index 00000000..e0fd8212 --- /dev/null +++ b/language-to-store/build.gradle @@ -0,0 +1,10 @@ +apply plugin: 'java-library' +apply from: "${rootDir}/gradle/java-common.gradle" +apply from: "${rootDir}/gradle/junit.gradle" +apply from: "${rootDir}/gradle/xtend.gradle" + +dependencies { + api project(':refinery-language-model') + api project(':refinery-store') + testImplementation testFixtures(project(':refinery-language')) +} diff --git a/language-to-store/src/main/java/org/eclipse/viatra/solver/language/mapping/PartialModelMapper.java b/language-to-store/src/main/java/org/eclipse/viatra/solver/language/mapping/PartialModelMapper.java new file mode 100644 index 00000000..7eae4361 --- /dev/null +++ b/language-to-store/src/main/java/org/eclipse/viatra/solver/language/mapping/PartialModelMapper.java @@ -0,0 +1,11 @@ +package org.eclipse.viatra.solver.language.mapping; + +import org.eclipse.viatra.solver.data.model.Model; +import org.eclipse.viatra.solver.language.model.problem.Problem; + +public class PartialModelMapper { + public Model transformProblem(Problem problem) { + // TODO @Marci Implement this + throw new UnsupportedOperationException(); + } +} diff --git a/language-to-store/src/test/java/org/eclipse/viatra/solver/language/mapping/tests/PartialModelMapperTest.xtend b/language-to-store/src/test/java/org/eclipse/viatra/solver/language/mapping/tests/PartialModelMapperTest.xtend new file mode 100644 index 00000000..a769ae20 --- /dev/null +++ b/language-to-store/src/test/java/org/eclipse/viatra/solver/language/mapping/tests/PartialModelMapperTest.xtend @@ -0,0 +1,44 @@ +package org.eclipse.viatra.solver.language.mapping.tests + +import com.google.inject.Inject +import org.eclipse.viatra.solver.language.mapping.PartialModelMapper +import org.eclipse.viatra.solver.language.model.problem.Problem +import org.eclipse.viatra.solver.language.tests.ProblemInjectorProvider +import org.eclipse.xtext.testing.InjectWith +import org.eclipse.xtext.testing.extensions.InjectionExtension +import org.eclipse.xtext.testing.util.ParseHelper +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.^extension.ExtendWith + +import static org.hamcrest.MatcherAssert.assertThat +import static org.hamcrest.Matchers.* + +@ExtendWith(InjectionExtension) +@InjectWith(ProblemInjectorProvider) +class PartialModelMapperTest { + @Inject + ParseHelper parseHelper + + PartialModelMapper mapper + + @BeforeEach + def void beforeEach() { + mapper = new PartialModelMapper + } + + @Test + @Disabled("Method not yet implemented") + def void exampleTest() { + val problem = parseHelper.parse(''' + class Person { + Person[0..*] friend + } + + friend(a, b). + ''') + val model = mapper.transformProblem(problem) + assertThat(model, notNullValue()) + } +} diff --git a/language/build.gradle b/language/build.gradle index 494d9d08..e9db351f 100644 --- a/language/build.gradle +++ b/language/build.gradle @@ -1,22 +1,30 @@ apply plugin: 'java-library' +apply plugin: 'java-test-fixtures' apply from: "${rootDir}/gradle/xtext-common.gradle" apply from: "${rootDir}/gradle/junit.gradle" apply from: "${rootDir}/gradle/mwe2.gradle" apply from: "${rootDir}/gradle/xtend.gradle" dependencies { + api platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}") api "org.eclipse.xtext:org.eclipse.xtext:${xtextVersion}" api "org.eclipse.xtext:org.eclipse.xtext.xbase:${xtextVersion}" api "org.eclipse.emf:org.eclipse.emf.ecore:${ecoreVersion}" api project(':refinery-language-model') - testImplementation "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" - testImplementation "org.eclipse.xtext:org.eclipse.xtext.xbase.testing:${xtextVersion}" + testFixturesApi "org.eclipse.xtext:org.eclipse.xtext.testing:${xtextVersion}" mwe2 "org.eclipse.xtext:org.eclipse.xtext.common.types:${xtextVersion}" mwe2 "org.eclipse.xtext:org.eclipse.xtext.xtext.generator:${xtextVersion}" mwe2 "org.eclipse.xtext:xtext-antlr-generator:${xtextAntlrGeneratorVersion}" mwe2 project(':refinery-language-mwe2') } +sourceSets { + testFixtures { + java.srcDirs += ['src/testFixtures/xtext-gen'] + resources.srcDirs += ['src/testFixtures/xtext-gen'] + } +} + tasks.named('jar') { from(sourceSets.main.allSource) { include '**/*.xtext' @@ -29,7 +37,7 @@ def generateXtextLanguage = tasks.register('generateXtextLanguage', JavaExec) { inputs.file 'src/main/java/org/eclipse/viatra/solver/language/GenerateProblem.mwe2' inputs.file 'src/main/java/org/eclipse/viatra/solver/language/Problem.xtext' outputs.dir 'src/main/xtext-gen' - outputs.dir 'src/test/xtext-gen' + outputs.dir 'src/testFixtures/xtext-gen' outputs.dir '../language-ide/src/main/xtext-gen' outputs.dir '../language-web/src/main/xtext-gen' outputs.dir '../language-web/build/generated/sources/xtext' @@ -53,8 +61,14 @@ tasks.named('processResources') { tasks.named('clean') { delete 'src/main/xtext-gen' - delete 'src/test/xtext-gen' + delete 'src/testFixtures/xtext-gen' delete '../language-ide/src/main/xtext-gen' delete '../language-web/src/main/xtext-gen' delete '../language-web/build/generated/sources/xtext' } + +sonarqube.properties { + properties['sonar.exclusions'] += [ + 'src/testFixtures/xtext-gen/**', + ] +} diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/GenerateProblem.mwe2 b/language/src/main/java/org/eclipse/viatra/solver/language/GenerateProblem.mwe2 index b8bc5a44..4dfbb242 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/GenerateProblem.mwe2 +++ b/language/src/main/java/org/eclipse/viatra/solver/language/GenerateProblem.mwe2 @@ -15,6 +15,7 @@ Workflow { rootPath = rootPath runtimeTest = { enabled = true + srcGen = 'src/testFixtures/xtext-gen' } genericIde = { name = "language-ide" @@ -48,6 +49,8 @@ Workflow { generateStub = false } junitSupport = { + generateStub = false + skipXbaseTestingPackage = true junitVersion = "5" } webSupport = ProblemWebIntegrationFragment { diff --git a/settings.gradle b/settings.gradle index 00d4a82b..9edf237f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,6 +4,7 @@ include 'language' include 'language-ide' include 'language-model' include 'language-mwe2' +include 'language-to-store' include 'language-web' include 'store' -- cgit v1.2.3-70-g09d2