[SOLVED] Reference genmodel of another DSL relative to the platform [message #1727899] |
Tue, 29 March 2016 07:26 |
Tam Gom Messages: 36 Registered: July 2011 |
Member |
|
|
Hi all,
I have two DSLs created with Xtext 2.9.1, where one DSL has cross references to the other.
For example I can define something like this in DSL A:
package myservice
service MyService {
list : GET
get : GET
save : POST
}
Then I can use the defined service and its methods in DSL B:
package myclient
import myservice
client MyService {
list
get
}
When I reference DSL A's grammar I have to give the path of DslA.genmodel in GenerateDslB.mwe2:
language = StandardLanguage {
// FIXME: only absolute path works for me
referencedResource = "platform:/resource/org.xtext.example.dsla/model/generated/DslA.genmodel"
//referencedResource = "file:///path/to/dsla/org.xtext.example.dsla/model/generated/DslA.genmodel"
name = "org.xtext.example.mydsl.DslB"
fileExtensions = "dslb"
serializer = {
generateStub = false
}
validator = {
// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
}
}
In the above code snippet if I define the referencedResource variable starting with "platform:/resource..." I get the following exception during Xtext generation:
348 [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher - Problems running workflow org.xtext.example.mydsl.GenerateDslB: java.io.IOException: The path '/org.xtext.example.dsla/model/generated/DslA.genmodel' is unmapped
java.lang.RuntimeException: Problems running workflow org.xtext.example.mydsl.GenerateDslB: java.io.IOException: The path '/org.xtext.example.dsla/model/generated/DslA.genmodel' is unmapped
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:104)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:62)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:52)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:78)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:36)
Caused by: org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: java.io.IOException: The path '/org.xtext.example.dsla/model/generated/DslA.genmodel' is unmapped
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278)
at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265)
at org.eclipse.xtext.xtext.generator.XtextGeneratorResourceSetInitializer.loadResource(XtextGeneratorResourceSetInitializer.java:57)
at org.eclipse.xtext.xtext.generator.XtextGeneratorResourceSetInitializer.access$0(XtextGeneratorResourceSetInitializer.java:54)
at org.eclipse.xtext.xtext.generator.XtextGeneratorResourceSetInitializer$1.apply(XtextGeneratorResourceSetInitializer.java:46)
at org.eclipse.xtext.xtext.generator.XtextGeneratorResourceSetInitializer$1.apply(XtextGeneratorResourceSetInitializer.java:1)
at org.eclipse.xtext.xbase.lib.IteratorExtensions.forEach(IteratorExtensions.java:363)
at org.eclipse.xtext.xbase.lib.IterableExtensions.forEach(IterableExtensions.java:333)
at org.eclipse.xtext.xtext.generator.XtextGeneratorResourceSetInitializer.initialize(XtextGeneratorResourceSetInitializer.java:49)
at org.eclipse.xtext.xtext.generator.XtextGeneratorLanguage.initialize(XtextGeneratorLanguage.java:206)
at org.eclipse.xtext.xtext.generator.StandardLanguage.initialize(StandardLanguage.java:166)
at org.eclipse.xtext.xtext.generator.XtextGenerator.initialize(XtextGenerator.java:176)
at org.eclipse.xtext.xtext.generator.XtextGenerator.checkConfigurationInternal(XtextGenerator.java:120)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent2.checkConfiguration(AbstractWorkflowComponent2.java:21)
at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.preInvoke(Mwe2Bridge.java:65)
at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.preInvoke(AbstractWorkflowComponent.java:197)
at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.preInvoke(AbstractCompositeWorkflowComponent.java:29)
at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:18)
at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:102)
... 4 more
Caused by: java.io.IOException: The path '/org.xtext.example.dsla/model/generated/DslA.genmodel' is unmapped
at org.eclipse.emf.ecore.resource.impl.PlatformResourceURIHandlerImpl.createInputStream(PlatformResourceURIHandlerImpl.java:535)
at org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl.createInputStream(ExtensibleURIConverterImpl.java:360)
at org.eclipse.xtext.resource.XtextResourceSet$1.createInputStream(XtextResourceSet.java:298)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1269)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
... 22 more
If I use the absolute path of DslA.genmodel in my filesystem as you can see in the line commented out in the snippet, it works fine.
Could you please help how I can define the path of DslA.genmodel relative to the platform properly?
I attached a working example of my case to this comment.
Thank you.
[Updated on: Tue, 29 March 2016 09:02] Report message to a moderator
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02550 seconds