[Xpand/Xtend] Extension problem with xsd metamodel [message #1033142] |
Wed, 03 April 2013 22:48 |
serhat gezgin Messages: 243 Registered: January 2013 Location: Izmir |
Senior Member |
|
|
Hi all,
I create xpand project and it's work perfectly from workflow file or java code but
when i export project like plug-in and than run plug-in with run as Eclipse
Application(run time Eclipse), on runtime Eclipse my template file (.xpt) can't
recognize my Extension files (.ext) and always give me;
[main] ERROR o.e.emf.mwe.core.WorkflowEngine - Workflow interrupted. Reason: Couldn't find operation 'moduleName(String)' for ir::IModule.
I think eclipse run time can't reach extension files. But don't know how can i solve
this problem?
Anyone can help me ?
Regards.
[Updated on: Fri, 19 April 2013 11:08] Report message to a moderator
|
|
|
Re: XPand .xpt File can't Recognize Extension Files on Runtime [message #1033373 is a reply to message #1033142] |
Thu, 04 April 2013 07:06 |
|
If I understand correctly, you are deploying the Xpand plugin project into a runtime Eclipse instance. From this instance, you are somehow invoking a workflow. Is this workflow in a project in the workspace of your runtime instance? Does this include the generator plugin with a plugin dependency?
When running the workflow, which implementation of ResourceManager is used? You might debug into the code, maybe by setting an exception breakpoint on EvaluationException. If you know which ResourceManager is used (likely ResourceManagerDefaultImpl), you can set breakpoints there to learn why a resource is not found.
Alternatively, strip down your example and attach it here with step-by-step instruction how to reproduce your error.
Regards,
~Karsten
Need professional support for Xtext, EMF, Eclipse IDE?
Go to: http://devhub.karakun.com
Twitter : @kthoms
Blog : www.karsten-thoms.de
|
|
|
Re: XPand .xpt File can't Recognize Extension Files on Runtime [message #1033452 is a reply to message #1033373] |
Thu, 04 April 2013 08:36 |
serhat gezgin Messages: 243 Registered: January 2013 Location: Izmir |
Senior Member |
|
|
Hi,
Yes i deploy plugin project into a runtime Eclipse Instance. From this instance,
workflow invoking from command. But my workflow does'nt exist on runtime instance. Its
in xpand project, xpand project have its runner function and plug-in project have dependency with this project. I dont know
which resourceManager used.
i used this code to generate file;
XmlUtil.setModuleNameElement(path + sourceFileName
+ Constant.xmlFileExtension, sourceFileName);
WorkflowRunner runner = new WorkflowRunner();
HashMap<String, Object> externalSlotContents = new HashMap<String, Object>();
HashMap<String, String> theParams = new HashMap<String, String>();
theParams.put("modelFile", path + sourceFileName
+ Constant.xmlFileExtension);
theParams.put("toPath", path);
runner.run(Constant.sourceWorkFlowFilePath,
new NullProgressMonitor(), theParams, externalSlotContents);
Util.deleteEmptyLinesFromGeneratedEcoreFile(path,
XmlUtil.returnNameOfModuleElement(path + sourceFileName
+ Constant.xmlFileExtension));
This code workes perfectly in main function like;
public static void main(String[] args) {
String path = "C:\\Users\\unituser\\Desktop\\navigation" + "\\";
String fileName = "navigation";
XpandRunner.runClaferAfterXpandGenerator(path, fileName);
}
But when i invoke code from command on runtime Eclipse i get;
ERROR o.e.emf.mwe.core.WorkflowEngine - Workflow interrupted. Reason: Couldn't find operation 'moduleName(String)' for ir::IModule.
my workflow;
<workflow>
<component class="org.eclipse.xtend.typesystem.xsd.XMLReader">
<modelSlot value="model" />
<uri value="${modelFile}" />
<metaModel id="mm"
class="org.eclipse.xtend.typesystem.xsd.XSDMetaModel">
<schemaFile value="metamodel/ir.xsd" />
</metaModel>
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel idRef="mm" />
<expand value="template::DeepTravelTemplate::Root FOR model" />
<outlet path="${toPath}" />
<globalVarDef name="domainModelAbsClases" value="{}"/>
<globalVarDef name="domainModelAbsAndConcreateClases" value="{}"/>
</component>
</workflow>
and my DeepTravelTemplate like;
«IMPORT ir»
«EXTENSION template::GeneratorExtension»
«DEFINE Root FOR ir::IModule»
«FILE moduleName(name) + ".ecore"»<?xml version="1.0" encoding="UTF-8"?>
...
«ENDFILE»
«ENDDEFINE»
my GeneratorExtension;
import ir;
extension metamodel::MetamodelExtension reexport;
moduleName(String name) :
name.length > 0 ? name : 'unknown';
idName(String id) :
id.split("_").last();
...
my MetamodelExtension like;
import ir;
List[String] domainModelAbsClases() : GLOBALVAR domainModelAbsClases;
List[String] domainModelAbsAndConcreateClases() : GLOBALVAR domainModelAbsAndConcreateClases;
...
and my command codes
IWorkspace workspace = ResourcesPlugin.getWorkspace();
File workspaceDirectory = workspace.getRoot().getLocation().toFile();
String[] fileDummyPath = firstElement.toString().split("/");
String filePathAfterWorkspace = "";
for (int i = 1; i < fileDummyPath.length; i++) {
if (i == fileDummyPath.length - 2)
filePathAfterWorkspace += fileDummyPath[i];
else if (i != fileDummyPath.length - 1)
filePathAfterWorkspace += fileDummyPath[i] + "/";
}
filePathAfterWorkspace = filePathAfterWorkspace.replace('/', '\\');
String workspacePath = workspaceDirectory.getAbsolutePath().toString();
String errorFromClafer = javaBean.XpandRunner.runClafer(workspacePath + "\\" + filePathAfterWorkspace.replaceAll("/", "\\") + "\\", fileDummyPath[fileDummyPath.length - 1].split("\\.")[0]);
if (errorFromClafer.equals("")) {
try {
javaBean.XpandRunner.runClaferAfterXpandGenerator(workspacePath + "\\" + filePathAfterWorkspace.replaceAll("/", "\\") + "\\", fileDummyPath[fileDummyPath.length - 1].split("\\.")[0]);
}
}
my complete error from xpand;
00:47:46.974 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - Workflow interrupted. Reason: Couldn't find operation 'moduleName(String)' for ir::IModule.
00:47:46.975 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - [ERROR]: Couldn't find operation 'moduleName(String)' for ir::IModule.(Element: moduleName(name); Reported by: Generator: generating 'template::DeepTravelTemplate::Root FOR model' => C:\Users\unituser\runtime-EclipseApplication\clafer\src\)
00:47:46.975 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - [ERROR]: Couldn't find operation 'moduleName(String)' for ir::IModule.(Element: moduleName(name).+(".ecore"); Reported by: Generator: generating 'template::DeepTravelTemplate::Root FOR model' => C:\Users\unituser\runtime-EclipseApplication\clafer\src\)
00:47:46.975 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - [ERROR]: Couldn't find operation 'moduleName(String)' for ir::IModule.(Element: org.eclipse.internal.xpand2.ast.FileStatement@6f2f508; Reported by: Generator: generating 'template::DeepTravelTemplate::Root FOR model' => C:\Users\unituser\runtime-EclipseApplication\clafer\src\)
00:47:46.975 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - [ERROR]: Couldn't find operation 'moduleName(String)' for ir::IModule.(Element: Root : ir::IModule; Reported by: Generator: generating 'template::DeepTravelTemplate::Root FOR model' => C:\Users\unituser\runtime-EclipseApplication\clafer\src\)
00:47:46.975 [main] ERROR o.e.emf.mwe.core.WorkflowEngine - [ERROR]: Couldn't find operation 'moduleName(String)' for ir::IModule.(Element: EXPAND template::DeepTravelTemplate::Root FOR model; Reported by: Generator: generating 'template::DeepTravelTemplate::Root FOR model' => C:\Users\unituser\runtime-EclipseApplication\clafer\src\)
I think Template and extensions correct there is another error but i can't get it.
And dont know how can i debug resourceImpl
I'd appreciate it if you could help me
Regards
[Updated on: Thu, 04 April 2013 12:48] Report message to a moderator
|
|
|
|
Powered by
FUDForum. Page generated in 0.05327 seconds