Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--query/plugins/org.eclipse.viatra.query.patternlanguage.emf/.settings/.api_filters13
-rw-r--r--query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java48
-rw-r--r--query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/EMFPatternLanguageValidator.java2
-rw-r--r--query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/META-INF/MANIFEST.MF3
-rw-r--r--query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/AbstractQueryCompilerTest.xtend9
-rw-r--r--query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/SimpleQueryGeneratorTest.xtend30
6 files changed, 79 insertions, 26 deletions
diff --git a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/.settings/.api_filters b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/.settings/.api_filters
index 1fac06f2b..068100b55 100644
--- a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/.settings/.api_filters
+++ b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/.settings/.api_filters
@@ -808,4 +808,17 @@
</message_arguments>
</filter>
</resource>
+ <resource path="src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java" type="org.eclipse.viatra.query.patternlanguage.emf.validation.ClasspathValidator">
+ <filter comment="Internal API update" id="338792546">
+ <message_arguments>
+ <message_argument value="org.eclipse.viatra.query.patternlanguage.emf.validation.ClasspathValidator"/>
+ <message_argument value="checkClassPath(Modifiers)"/>
+ </message_arguments>
+ </filter>
+ <filter comment="Internal API update" id="1143996420">
+ <message_arguments>
+ <message_argument value="enableClasspathValidation(boolean)"/>
+ </message_arguments>
+ </filter>
+ </resource>
</component>
diff --git a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java
index aebe97200..c058ed3a8 100644
--- a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java
+++ b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/ClasspathValidator.java
@@ -10,25 +10,25 @@
*******************************************************************************/
package org.eclipse.viatra.query.patternlanguage.emf.validation;
+import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Stream;
import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EPackage;
import org.eclipse.viatra.query.patternlanguage.emf.EMFPatternLanguageConfigurationConstants;
import org.eclipse.viatra.query.patternlanguage.emf.scoping.IMetamodelProvider;
import org.eclipse.viatra.query.patternlanguage.emf.vql.ClassType;
-import org.eclipse.viatra.query.patternlanguage.emf.vql.ExecutionType;
-import org.eclipse.viatra.query.patternlanguage.emf.vql.Modifiers;
import org.eclipse.viatra.query.patternlanguage.emf.vql.PackageImport;
import org.eclipse.viatra.query.patternlanguage.emf.vql.PatternLanguagePackage;
import org.eclipse.viatra.query.patternlanguage.emf.vql.PatternModel;
import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
-import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchEMFBackendFactory;
-import org.eclipse.xtext.common.types.JvmEnumerationType;
import org.eclipse.xtext.common.types.JvmGenericType;
import org.eclipse.xtext.common.types.util.TypeReferences;
import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
import org.eclipse.xtext.validation.Check;
import org.eclipse.xtext.validation.CheckType;
+import org.eclipse.xtext.validation.EValidatorRegistrar;
import com.google.inject.Inject;
import com.google.inject.name.Named;
@@ -44,17 +44,34 @@ public class ClasspathValidator extends AbstractDeclarativeValidator {
private TypeReferences typeReferences;
@Inject
private IMetamodelProvider metamodelProvider;
- @Named(EMFPatternLanguageConfigurationConstants.VALIDATE_CLASSPATH_KEY)
private boolean classpathValidationEnabled;
+
+ @Inject
+ public void enableClasspathValidation(@Named(EMFPatternLanguageConfigurationConstants.VALIDATE_CLASSPATH_KEY) boolean classpathValidationEnabled) {
+ this.classpathValidationEnabled = classpathValidationEnabled;
+ }
+
+ @Override
+ public void register(EValidatorRegistrar reg) {
+ // Overriding for composed validator
+ }
+
+ @Override
+ protected List<EPackage> getEPackages() {
+ List<EPackage> result = new ArrayList<>();
+ result.add(PatternLanguagePackage.eINSTANCE);
+ return result;
+ }
+
@Check
public void checkClassPath(PatternModel modelFile) {
if (!classpathValidationEnabled) {
return;
}
- final JvmGenericType listType = (JvmGenericType) typeReferences.findDeclaredType(List.class, modelFile);
- if (listType == null || listType.getTypeParameters().isEmpty()) {
- error("Couldn't find a JDK 1.5 or higher on the project's classpath.", modelFile,
+ final JvmGenericType listType = (JvmGenericType) typeReferences.findDeclaredType(Stream.class, modelFile);
+ if (listType == null) {
+ error("Couldn't find a JDK 1.8 or higher on the project's classpath.", modelFile,
PatternLanguagePackage.Literals.PATTERN_MODEL__PACKAGE_NAME, IssueCodes.JDK_NOT_ON_CLASSPATH);
} else if (typeReferences.findDeclaredType(ViatraQueryEngine.class, modelFile) == null) {
error("Couldn't find the mandatory library 'org.eclipse.viatra.query.runtime' on the project's classpath.",
@@ -62,21 +79,6 @@ public class ClasspathValidator extends AbstractDeclarativeValidator {
IssueCodes.IQR_NOT_ON_CLASSPATH, "org.eclipse.viatra.query.runtime");
}
}
-
- @Check
- public void checkClassPath(Modifiers modifier) {
- if (!classpathValidationEnabled) {
- return;
- }
- if (modifier.getExecution() == ExecutionType.SEARCH) {
- final JvmEnumerationType lsBackendType = (JvmEnumerationType) typeReferences.findDeclaredType(LocalSearchEMFBackendFactory.class, modifier);
- if (lsBackendType == null || lsBackendType.eIsProxy()) {
- error("Couldn't find the mandatory library 'org.eclipse.viatra.query.runtime.localsearch' on the project's classpath.",
- modifier, PatternLanguagePackage.Literals.MODIFIERS__EXECUTION,
- IssueCodes.IQR_NOT_ON_CLASSPATH, "org.eclipse.viatra.query.runtime.localsearch");
- }
- }
- }
@Check(CheckType.NORMAL)
public void checkClassPath(ClassType typeDecl) {
diff --git a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/EMFPatternLanguageValidator.java b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/EMFPatternLanguageValidator.java
index b89672eec..5398aa55d 100644
--- a/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/EMFPatternLanguageValidator.java
+++ b/query/plugins/org.eclipse.viatra.query.patternlanguage.emf/src/org/eclipse/viatra/query/patternlanguage/emf/validation/EMFPatternLanguageValidator.java
@@ -110,7 +110,7 @@ import com.google.inject.Inject;
*
* @noreference
*/
-@ComposedChecks(validators = { PatternLanguageValidator.class, VariableUsageCounter.class })
+@ComposedChecks(validators = { PatternLanguageValidator.class, VariableUsageCounter.class, ClasspathValidator.class })
public class EMFPatternLanguageValidator extends AbstractEMFPatternLanguageValidator implements IIssueCallback {
private String calculateIssueData(IInputKey input) {
diff --git a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/META-INF/MANIFEST.MF b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/META-INF/MANIFEST.MF
index 35bcc28f9..62caebae5 100644
--- a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/META-INF/MANIFEST.MF
+++ b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/META-INF/MANIFEST.MF
@@ -27,7 +27,8 @@ Require-Bundle: org.eclipse.viatra.query.patternlanguage.emf;bundle-version="[2.
org.eclipse.xtext.testing;bundle-version="[2.12.0,3.0.0)",
org.eclipse.xtext.ui.testing;bundle-version="[2.12.0,3.0.0)",
org.eclipse.viatra.query.patternlanguage.emf.tests;bundle-version="[2.1.0,2.2.0)",
- org.eclipse.viatra.query.runtime.rete;bundle-version="[2.1.0,2.2.0)"
+ org.eclipse.viatra.query.runtime.rete;bundle-version="[2.1.0,2.2.0)",
+ org.eclipse.jdt.launching
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ClassPath: .
Import-Package: org.apache.log4j;version="1.2.15",
diff --git a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/AbstractQueryCompilerTest.xtend b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/AbstractQueryCompilerTest.xtend
index bb86efaa1..1e17d7ff4 100644
--- a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/AbstractQueryCompilerTest.xtend
+++ b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/AbstractQueryCompilerTest.xtend
@@ -21,6 +21,8 @@ import org.junit.BeforeClass
import org.eclipse.core.runtime.IPath
import org.eclipse.core.resources.IMarker
import org.eclipse.core.resources.IResource
+import java.util.function.Consumer
+import org.eclipse.core.resources.IProject
abstract class AbstractQueryCompilerTest extends AbstractWorkbenchTest {
@@ -48,9 +50,14 @@ abstract class AbstractQueryCompilerTest extends AbstractWorkbenchTest {
}
protected def void testFileCreationAndBuild(String contents, int expectedIssueCount) {
+ testFileCreationAndBuild(contents, expectedIssueCount, [])
+ }
+
+ protected def void testFileCreationAndBuild(String contents, int expectedIssueCount, Consumer<IProject> projectConfigurer) {
val testFile = IResourcesSetupUtil.createFile(filePath, contents)
- IResourcesSetupUtil.waitForBuild
val project = testFile.project
+ projectConfigurer.accept(project)
+ IResourcesSetupUtil.waitForBuild
val markers = project.findMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE).
filter[IMarker.SEVERITY_ERROR == it.attributes.get(IMarker.SEVERITY)]
assertEquals(
diff --git a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/SimpleQueryGeneratorTest.xtend b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/SimpleQueryGeneratorTest.xtend
index 71d5d09f3..28cb78d1e 100644
--- a/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/SimpleQueryGeneratorTest.xtend
+++ b/query/tests/org.eclipse.viatra.query.patternlanguage.emf.ui.tests/src/org/eclipse/viatra/query/patternlanguage/emf/tests/generator/SimpleQueryGeneratorTest.xtend
@@ -10,9 +10,15 @@
*******************************************************************************/
package org.eclipse.viatra.query.patternlanguage.emf.tests.generator
+import org.eclipse.core.resources.IncrementalProjectBuilder
+import org.eclipse.core.runtime.NullProgressMonitor
+import org.eclipse.jdt.core.IClasspathEntry
+import org.eclipse.jdt.core.JavaCore
+import org.eclipse.jdt.launching.JavaRuntime
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TestName
+import org.junit.Ignore
class SimpleQueryGeneratorTest extends AbstractQueryCompilerTest {
@@ -38,4 +44,28 @@ class SimpleQueryGeneratorTest extends AbstractQueryCompilerTest {
''', 0)
}
+ //TODO Fix this test
+ @Test
+ @Ignore("The test does not run correctly on the build server - theory: the Eclipse did not find Java 7 installed.")
+ def void oldJavaVersion() {
+ testFileCreationAndBuild('''
+ package test
+
+ import "http://www.eclipse.org/emf/2002/Ecore"
+
+ pattern testPattern() {
+ EClass(x);
+ }
+ ''', 1, [project |
+ val javaProject = JavaCore.create(project)
+ javaProject.setRawClasspath(javaProject.rawClasspath.map[
+ if (it.entryKind === IClasspathEntry.CPE_CONTAINER && it.path.toString.endsWith("JavaSE-1.8")) {
+ JavaCore.newContainerEntry(JavaRuntime.newJREContainerPath(JavaRuntime.getExecutionEnvironmentsManager().getEnvironment("JavaSE-1.7")))
+ } else {
+ it
+ }
+ ], new NullProgressMonitor)
+ project.build(IncrementalProjectBuilder.CLEAN_BUILD, new NullProgressMonitor)
+ ])
+ }
} \ No newline at end of file

Back to the top