Skip to content

Commit 0db7bc0

Browse files
committed
adapt Xtext to be supported by theia
1 parent a5d1bd4 commit 0db7bc0

File tree

5 files changed

+47
-14
lines changed

5 files changed

+47
-14
lines changed

plugins/de.fraunhofer.ipa.ros.xtext.tests/src/de/fraunhofer/ipa/ros/tests/RosGeneratorTest.xtend

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ class RosGeneratorTest {
8787

8888
val fsa = new InMemoryFileSystemAccess
8989
CIGenerator.doGenerate(model.eResource, fsa, new GeneratorContext)
90-
Assert.assertTrue(fsa.textFiles.containsKey(CICustomOutputProvider::COM_OUTPUT + "test_node.componentinterface"))
90+
Assert.assertTrue(fsa.textFiles.containsKey(CICustomOutputProvider::CM_CONFIGURATION + "test_node.componentinterface"))
9191
Assert.assertEquals(
9292
new String(Files.readAllBytes(Paths.get(RESOURCES_BASE_DIR, 'components', 'test_node.componentinterface'))).trim,
93-
fsa.textFiles.get(CICustomOutputProvider::COM_OUTPUT + "test_node.componentinterface").toString.trim)
93+
fsa.textFiles.get(CICustomOutputProvider::CM_CONFIGURATION + "test_node.componentinterface").toString.trim)
9494
}
9595

9696
}

plugins/de.fraunhofer.ipa.ros.xtext/src/de/fraunhofer/ipa/ros/RosRuntimeModule.xtend

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@ package de.fraunhofer.ipa.ros
55

66
import com.google.inject.Binder
77
import de.fraunhofer.ipa.ros.generator.CICustomOutputProvider
8-
import org.eclipse.xtext.conversion.IValueConverterService
98
import org.eclipse.xtext.generator.IOutputConfigurationProvider
9+
import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider
1010

1111
/**
1212
* Use this class to register components to be used at runtime / without the Equinox extension registry.
1313
*/
1414
class RosRuntimeModule extends AbstractRosRuntimeModule {
15-
16-
override void configure(Binder binder) {
15+
16+
override void configure(Binder binder) {
1717
super.configure(binder)
1818
binder.bind(IOutputConfigurationProvider).to(CICustomOutputProvider).asEagerSingleton()
19+
binder.bind(IContextualOutputConfigurationProvider).to(CICustomOutputProvider).asEagerSingleton()
1920
}
2021

2122
}

plugins/de.fraunhofer.ipa.ros.xtext/src/de/fraunhofer/ipa/ros/generator/RosGenerator.xtend

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,35 @@ import org.eclipse.xtext.generator.IOutputConfigurationProvider
1212
import org.eclipse.xtext.generator.OutputConfiguration
1313
import ros.Node
1414
import ros.Package
15+
import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider
1516

16-
class CICustomOutputProvider implements IOutputConfigurationProvider {
17-
public final static String COM_OUTPUT = "COM_OUTPUT"
18-
17+
class CICustomOutputProvider implements IOutputConfigurationProvider, IContextualOutputConfigurationProvider {
18+
public final static String CM_CONFIGURATION = "CM_CONFIGURATION"
19+
public final static String DEFAULT_OUTPUT = "DEFAULT_OUTPUT"
1920

2021
override Set<OutputConfiguration> getOutputConfigurations() {
2122

22-
var OutputConfiguration default_config = new OutputConfiguration(COM_OUTPUT)
23-
default_config.setDescription("COM_OUTPUT");
24-
default_config.setOutputDirectory("./components/");
23+
var OutputConfiguration cm_config = new OutputConfiguration(CM_CONFIGURATION)
24+
cm_config.setDescription("CM_CONFIGURATION");
25+
cm_config.setOutputDirectory("./components/");
26+
cm_config.setOverrideExistingResources(true);
27+
cm_config.setCreateOutputDirectory(true);
28+
cm_config.setCleanUpDerivedResources(false);
29+
cm_config.setSetDerivedProperty(false);
30+
var OutputConfiguration default_config = new OutputConfiguration(DEFAULT_OUTPUT)
31+
default_config.setDescription("DEFAULT_OUTPUT");
32+
default_config.setOutputDirectory("./src-gen/");
2533
default_config.setOverrideExistingResources(true);
2634
default_config.setCreateOutputDirectory(true);
2735
default_config.setCleanUpDerivedResources(false);
2836
default_config.setSetDerivedProperty(false);
29-
return newHashSet(default_config)
37+
return newHashSet(cm_config, default_config)
38+
}
39+
40+
override Set<OutputConfiguration> getOutputConfigurations(Resource context) {
41+
return getOutputConfigurations()
3042
}
43+
3144
}
3245

3346
/**
@@ -57,7 +70,8 @@ class RosGenerator extends AbstractGenerator {
5770
}
5871
}
5972
for (node : resource.allContents.toIterable.filter(Node)){
60-
fsa.generateFile(node.getName()+".componentinterface",CICustomOutputProvider::COM_OUTPUT,compile(node,package_name,artifact_name))
73+
fsa.generateFile(node.getName()+".componentinterface",CICustomOutputProvider::CM_CONFIGURATION,compile(node,package_name,artifact_name))
74+
6175
}
6276
}
6377

plugins/de.fraunhofer.ipa.rossystem.xtext.ide/META-INF/MANIFEST.MF

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,21 @@ Require-Bundle: de.fraunhofer.ipa.rossystem.xtext,
99
de.fraunhofer.ipa.rossystem,
1010
org.eclipse.xtext.ide,
1111
org.eclipse.xtext.xbase.ide,
12+
org.eclipse.sprotty,
13+
org.eclipse.sprotty.layout,
14+
org.eclipse.sprotty.server,
15+
org.eclipse.sprotty.xtext,
16+
org.eclipse.lsp4j,
17+
org.eclipse.elk.graph,
18+
com.google.gson,
19+
org.objectweb.asm,
20+
org.objectweb.asm.commons,
21+
org.objectweb.asm.tree,
22+
org.apache.log4j,
23+
org.eclipse.elk.alg.common,
24+
org.eclipse.elk.alg.layered,
25+
org.eclipse.elk.core,
26+
org.eclipse.lsp4j.jsonrpc,
1227
org.antlr.runtime
1328
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
1429
Export-Package: de.fraunhofer.ipa.rossystem.ide.contentassist.antlr.internal,

plugins/de.fraunhofer.ipa.rossystem.xtext/src/de/fraunhofer/ipa/rossystem/RosSystemRuntimeModule.xtend

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import org.eclipse.xtext.generator.IOutputConfigurationProvider
77
import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider
88
import de.fraunhofer.ipa.rossystem.generator.CustomOutputProvider
99
import com.google.inject.Binder
10-
10+
import org.eclipse.xtext.naming.IQualifiedNameProvider
1111

1212
/**
1313
* Use this class to register components to be used at runtime / without the Equinox extension registry.
@@ -21,4 +21,7 @@ class RosSystemRuntimeModule extends AbstractRosSystemRuntimeModule {
2121

2222
}
2323

24+
override Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
25+
return RosSystemQNP;
26+
}
2427
}

0 commit comments

Comments
 (0)