aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-07-29 21:58:47 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-07-29 21:58:47 +0200
commit1d43c802f853b08f03c4b3954af242ad005c8afd (patch)
tree9a98da19c07fc587b6a3e2283aca707ad345e252 /subprojects/language/src/main/java
parentbuild: clean up buildSrc scripts (diff)
downloadrefinery-1d43c802f853b08f03c4b3954af242ad005c8afd.tar.gz
refinery-1d43c802f853b08f03c4b3954af242ad005c8afd.tar.zst
refinery-1d43c802f853b08f03c4b3954af242ad005c8afd.zip
refactor: simplify language project
* Move all utilities for language-model to language, since they do not make sense on their own * Convert xtend code into java
Diffstat (limited to 'subprojects/language/src/main/java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java30
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java11
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java35
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java2
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java2
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java2
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java2
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java4
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java2
9 files changed, 22 insertions, 68 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java
index d753a119..41c96114 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java
@@ -3,14 +3,11 @@
3 */ 3 */
4package tools.refinery.language; 4package tools.refinery.language;
5 5
6import org.eclipse.emf.ecore.resource.Resource; 6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.xtext.resource.IResourceFactory;
8import org.eclipse.xtext.resource.IResourceServiceProvider;
9 7
10import com.google.inject.Guice;
11import com.google.inject.Injector; 8import com.google.inject.Injector;
12 9
13import tools.refinery.language.model.ProblemEMFSetup; 10import tools.refinery.language.model.problem.ProblemPackage;
14 11
15/** 12/**
16 * Initialization support for running Xtext languages without Equinox extension 13 * Initialization support for running Xtext languages without Equinox extension
@@ -22,23 +19,16 @@ public class ProblemStandaloneSetup extends ProblemStandaloneSetupGenerated {
22 new ProblemStandaloneSetup().createInjectorAndDoEMFRegistration(); 19 new ProblemStandaloneSetup().createInjectorAndDoEMFRegistration();
23 } 20 }
24 21
22 // Here we can't rely on java.util.HashMap#putIfAbsent, because
23 // org.eclipse.emf.ecore.impl.EPackageRegistryImpl#containsKey is overridden
24 // without also overriding putIfAbsent. We must make sure to call the
25 // overridden containsKey implementation.
26 @SuppressWarnings("squid:S3824")
25 @Override 27 @Override
26 public Injector createInjectorAndDoEMFRegistration() { 28 public Injector createInjectorAndDoEMFRegistration() {
27 ProblemEMFSetup.doEMFRegistration(); 29 if (!EPackage.Registry.INSTANCE.containsKey(ProblemPackage.eNS_URI)) {
28 var xmiInjector = createXmiInjector(); 30 EPackage.Registry.INSTANCE.put(ProblemPackage.eNS_URI, ProblemPackage.eINSTANCE);
29 registerXmiInjector(xmiInjector); 31 }
30 return super.createInjectorAndDoEMFRegistration(); 32 return super.createInjectorAndDoEMFRegistration();
31 } 33 }
32
33 protected Injector createXmiInjector() {
34 return Guice.createInjector(new ProblemXmiRuntimeModule());
35 }
36
37 protected void registerXmiInjector(Injector injector) {
38 IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
39 IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
40
41 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(ProblemEMFSetup.XMI_RESOURCE_EXTENSION, resourceFactory);
42 IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put(ProblemEMFSetup.XMI_RESOURCE_EXTENSION, serviceProvider);
43 }
44} 34}
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
index d8958381..b1e39176 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
@@ -1,4 +1,4 @@
1package tools.refinery.language.model; 1package tools.refinery.language;
2 2
3import java.util.ArrayDeque; 3import java.util.ArrayDeque;
4import java.util.Collection; 4import java.util.Collection;
@@ -34,15 +34,15 @@ public final class ProblemUtil {
34 public static boolean isSingletonVariable(Variable variable) { 34 public static boolean isSingletonVariable(Variable variable) {
35 return variable.eContainingFeature() == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__SINGLETON_VARIABLE; 35 return variable.eContainingFeature() == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__SINGLETON_VARIABLE;
36 } 36 }
37 37
38 public static boolean isImplicitVariable(Variable variable) { 38 public static boolean isImplicitVariable(Variable variable) {
39 return variable instanceof ImplicitVariable; 39 return variable instanceof ImplicitVariable;
40 } 40 }
41 41
42 public static boolean isImplicitNode(Node node) { 42 public static boolean isImplicitNode(Node node) {
43 return node.eContainingFeature() == ProblemPackage.Literals.PROBLEM__NODES; 43 return node.eContainingFeature() == ProblemPackage.Literals.PROBLEM__NODES;
44 } 44 }
45 45
46 public static boolean isImplicit(EObject eObject) { 46 public static boolean isImplicit(EObject eObject) {
47 if (eObject instanceof Node node) { 47 if (eObject instanceof Node node) {
48 return isImplicitNode(node); 48 return isImplicitNode(node);
@@ -115,7 +115,6 @@ public final class ProblemUtil {
115 115
116 private static URI getLibraryUri(String libraryName) { 116 private static URI getLibraryUri(String libraryName) {
117 return URI.createURI(ProblemUtil.class.getClassLoader() 117 return URI.createURI(ProblemUtil.class.getClassLoader()
118 .getResource("model/" + libraryName + "." + ProblemEMFSetup.XMI_RESOURCE_EXTENSION) 118 .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString());
119 .toString());
120 } 119 }
121} 120}
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java
deleted file mode 100644
index 03a33bee..00000000
--- a/subprojects/language/src/main/java/tools/refinery/language/ProblemXmiRuntimeModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
1package tools.refinery.language;
2
3import org.eclipse.xtext.naming.IQualifiedNameConverter;
4import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
5import org.eclipse.xtext.resource.IResourceFactory;
6import org.eclipse.xtext.resource.generic.AbstractGenericResourceRuntimeModule;
7
8import tools.refinery.language.model.ProblemEMFSetup;
9import tools.refinery.language.naming.ProblemQualifiedNameConverter;
10import tools.refinery.language.resource.ProblemResourceDescriptionStrategy;
11import tools.refinery.language.resource.ProblemXmiResourceFactory;
12
13public class ProblemXmiRuntimeModule extends AbstractGenericResourceRuntimeModule {
14 @Override
15 protected String getLanguageName() {
16 return "tools.refinery.language.ProblemXmi";
17 }
18
19 @Override
20 protected String getFileExtensions() {
21 return ProblemEMFSetup.XMI_RESOURCE_EXTENSION;
22 }
23
24 public Class<? extends IResourceFactory> bindIResourceFactory() {
25 return ProblemXmiResourceFactory.class;
26 }
27
28 public Class<? extends IQualifiedNameConverter> bindIQualifiedNameConverter() {
29 return ProblemQualifiedNameConverter.class;
30 }
31
32 public Class<? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
33 return ProblemResourceDescriptionStrategy.class;
34 }
35}
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java
index 7aa75833..f6ae4f1e 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java
@@ -4,7 +4,7 @@ import org.eclipse.emf.ecore.EObject;
4import org.eclipse.xtext.resource.DefaultLocationInFileProvider; 4import org.eclipse.xtext.resource.DefaultLocationInFileProvider;
5import org.eclipse.xtext.util.ITextRegion; 5import org.eclipse.xtext.util.ITextRegion;
6 6
7import tools.refinery.language.model.ProblemUtil; 7import tools.refinery.language.ProblemUtil;
8import tools.refinery.language.model.problem.ImplicitVariable; 8import tools.refinery.language.model.problem.ImplicitVariable;
9import tools.refinery.language.model.problem.Node; 9import tools.refinery.language.model.problem.Node;
10 10
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
index f86ebd38..24d00f07 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java
@@ -12,7 +12,7 @@ import org.eclipse.xtext.util.IAcceptor;
12import com.google.inject.Inject; 12import com.google.inject.Inject;
13import com.google.inject.Singleton; 13import com.google.inject.Singleton;
14 14
15import tools.refinery.language.model.ProblemUtil; 15import tools.refinery.language.ProblemUtil;
16import tools.refinery.language.model.problem.NamedElement; 16import tools.refinery.language.model.problem.NamedElement;
17import tools.refinery.language.model.problem.Node; 17import tools.refinery.language.model.problem.Node;
18import tools.refinery.language.model.problem.Problem; 18import tools.refinery.language.model.problem.Problem;
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java
index b582d16b..ea4682f9 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java
@@ -6,7 +6,7 @@ import org.eclipse.emf.common.util.URI;
6import org.eclipse.emf.ecore.resource.Resource; 6import org.eclipse.emf.ecore.resource.Resource;
7import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider; 7import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider;
8 8
9import tools.refinery.language.model.ProblemUtil; 9import tools.refinery.language.ProblemUtil;
10 10
11public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider { 11public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider {
12 @Override 12 @Override
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java
index 85797025..53815e37 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java
@@ -13,7 +13,7 @@ import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
13 13
14import com.google.inject.Inject; 14import com.google.inject.Inject;
15 15
16import tools.refinery.language.model.ProblemUtil; 16import tools.refinery.language.ProblemUtil;
17 17
18public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { 18public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider {
19 private static final QualifiedName BUILTIN_LIBRARY_QUALIFIED_NAME = QualifiedName 19 private static final QualifiedName BUILTIN_LIBRARY_QUALIFIED_NAME = QualifiedName
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
index d31a5308..7a3e77a4 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java
@@ -12,12 +12,12 @@ import org.eclipse.xtext.EcoreUtil2;
12import org.eclipse.xtext.scoping.IScope; 12import org.eclipse.xtext.scoping.IScope;
13import org.eclipse.xtext.scoping.Scopes; 13import org.eclipse.xtext.scoping.Scopes;
14 14
15import tools.refinery.language.model.ProblemUtil; 15import tools.refinery.language.ProblemUtil;
16import tools.refinery.language.model.problem.Action;
16import tools.refinery.language.model.problem.ClassDeclaration; 17import tools.refinery.language.model.problem.ClassDeclaration;
17import tools.refinery.language.model.problem.ExistentialQuantifier; 18import tools.refinery.language.model.problem.ExistentialQuantifier;
18import tools.refinery.language.model.problem.NewActionLiteral; 19import tools.refinery.language.model.problem.NewActionLiteral;
19import tools.refinery.language.model.problem.ParametricDefinition; 20import tools.refinery.language.model.problem.ParametricDefinition;
20import tools.refinery.language.model.problem.Action;
21import tools.refinery.language.model.problem.Problem; 21import tools.refinery.language.model.problem.Problem;
22import tools.refinery.language.model.problem.ProblemPackage; 22import tools.refinery.language.model.problem.ProblemPackage;
23import tools.refinery.language.model.problem.ReferenceDeclaration; 23import tools.refinery.language.model.problem.ReferenceDeclaration;
diff --git a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java
index 975fdca2..6b0982eb 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java
@@ -8,7 +8,7 @@ import org.eclipse.xtext.validation.Check;
8 8
9import com.google.inject.Inject; 9import com.google.inject.Inject;
10 10
11import tools.refinery.language.model.ProblemUtil; 11import tools.refinery.language.ProblemUtil;
12import tools.refinery.language.model.problem.Node; 12import tools.refinery.language.model.problem.Node;
13import tools.refinery.language.model.problem.Problem; 13import tools.refinery.language.model.problem.Problem;
14import tools.refinery.language.model.problem.ProblemPackage; 14import tools.refinery.language.model.problem.ProblemPackage;