diff options
author | 2022-07-29 21:58:47 +0200 | |
---|---|---|
committer | 2022-07-29 21:58:47 +0200 | |
commit | 1d43c802f853b08f03c4b3954af242ad005c8afd (patch) | |
tree | 9a98da19c07fc587b6a3e2283aca707ad345e252 /subprojects/language/src/main/java | |
parent | build: clean up buildSrc scripts (diff) | |
download | refinery-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')
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 | */ |
4 | package tools.refinery.language; | 4 | package tools.refinery.language; |
5 | 5 | ||
6 | import org.eclipse.emf.ecore.resource.Resource; | 6 | import org.eclipse.emf.ecore.EPackage; |
7 | import org.eclipse.xtext.resource.IResourceFactory; | ||
8 | import org.eclipse.xtext.resource.IResourceServiceProvider; | ||
9 | 7 | ||
10 | import com.google.inject.Guice; | ||
11 | import com.google.inject.Injector; | 8 | import com.google.inject.Injector; |
12 | 9 | ||
13 | import tools.refinery.language.model.ProblemEMFSetup; | 10 | import 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 @@ | |||
1 | package tools.refinery.language.model; | 1 | package tools.refinery.language; |
2 | 2 | ||
3 | import java.util.ArrayDeque; | 3 | import java.util.ArrayDeque; |
4 | import java.util.Collection; | 4 | import 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 @@ | |||
1 | package tools.refinery.language; | ||
2 | |||
3 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | ||
4 | import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy; | ||
5 | import org.eclipse.xtext.resource.IResourceFactory; | ||
6 | import org.eclipse.xtext.resource.generic.AbstractGenericResourceRuntimeModule; | ||
7 | |||
8 | import tools.refinery.language.model.ProblemEMFSetup; | ||
9 | import tools.refinery.language.naming.ProblemQualifiedNameConverter; | ||
10 | import tools.refinery.language.resource.ProblemResourceDescriptionStrategy; | ||
11 | import tools.refinery.language.resource.ProblemXmiResourceFactory; | ||
12 | |||
13 | public 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; | |||
4 | import org.eclipse.xtext.resource.DefaultLocationInFileProvider; | 4 | import org.eclipse.xtext.resource.DefaultLocationInFileProvider; |
5 | import org.eclipse.xtext.util.ITextRegion; | 5 | import org.eclipse.xtext.util.ITextRegion; |
6 | 6 | ||
7 | import tools.refinery.language.model.ProblemUtil; | 7 | import tools.refinery.language.ProblemUtil; |
8 | import tools.refinery.language.model.problem.ImplicitVariable; | 8 | import tools.refinery.language.model.problem.ImplicitVariable; |
9 | import tools.refinery.language.model.problem.Node; | 9 | import 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; | |||
12 | import com.google.inject.Inject; | 12 | import com.google.inject.Inject; |
13 | import com.google.inject.Singleton; | 13 | import com.google.inject.Singleton; |
14 | 14 | ||
15 | import tools.refinery.language.model.ProblemUtil; | 15 | import tools.refinery.language.ProblemUtil; |
16 | import tools.refinery.language.model.problem.NamedElement; | 16 | import tools.refinery.language.model.problem.NamedElement; |
17 | import tools.refinery.language.model.problem.Node; | 17 | import tools.refinery.language.model.problem.Node; |
18 | import tools.refinery.language.model.problem.Problem; | 18 | import 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; | |||
6 | import org.eclipse.emf.ecore.resource.Resource; | 6 | import org.eclipse.emf.ecore.resource.Resource; |
7 | import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider; | 7 | import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider; |
8 | 8 | ||
9 | import tools.refinery.language.model.ProblemUtil; | 9 | import tools.refinery.language.ProblemUtil; |
10 | 10 | ||
11 | public class ProblemGlobalScopeProvider extends ImportUriGlobalScopeProvider { | 11 | public 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 | ||
14 | import com.google.inject.Inject; | 14 | import com.google.inject.Inject; |
15 | 15 | ||
16 | import tools.refinery.language.model.ProblemUtil; | 16 | import tools.refinery.language.ProblemUtil; |
17 | 17 | ||
18 | public class ProblemLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { | 18 | public 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; | |||
12 | import org.eclipse.xtext.scoping.IScope; | 12 | import org.eclipse.xtext.scoping.IScope; |
13 | import org.eclipse.xtext.scoping.Scopes; | 13 | import org.eclipse.xtext.scoping.Scopes; |
14 | 14 | ||
15 | import tools.refinery.language.model.ProblemUtil; | 15 | import tools.refinery.language.ProblemUtil; |
16 | import tools.refinery.language.model.problem.Action; | ||
16 | import tools.refinery.language.model.problem.ClassDeclaration; | 17 | import tools.refinery.language.model.problem.ClassDeclaration; |
17 | import tools.refinery.language.model.problem.ExistentialQuantifier; | 18 | import tools.refinery.language.model.problem.ExistentialQuantifier; |
18 | import tools.refinery.language.model.problem.NewActionLiteral; | 19 | import tools.refinery.language.model.problem.NewActionLiteral; |
19 | import tools.refinery.language.model.problem.ParametricDefinition; | 20 | import tools.refinery.language.model.problem.ParametricDefinition; |
20 | import tools.refinery.language.model.problem.Action; | ||
21 | import tools.refinery.language.model.problem.Problem; | 21 | import tools.refinery.language.model.problem.Problem; |
22 | import tools.refinery.language.model.problem.ProblemPackage; | 22 | import tools.refinery.language.model.problem.ProblemPackage; |
23 | import tools.refinery.language.model.problem.ReferenceDeclaration; | 23 | import 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 | ||
9 | import com.google.inject.Inject; | 9 | import com.google.inject.Inject; |
10 | 10 | ||
11 | import tools.refinery.language.model.ProblemUtil; | 11 | import tools.refinery.language.ProblemUtil; |
12 | import tools.refinery.language.model.problem.Node; | 12 | import tools.refinery.language.model.problem.Node; |
13 | import tools.refinery.language.model.problem.Problem; | 13 | import tools.refinery.language.model.problem.Problem; |
14 | import tools.refinery.language.model.problem.ProblemPackage; | 14 | import tools.refinery.language.model.problem.ProblemPackage; |