XPand workflow problem [message #63354] |
Tue, 30 June 2009 09:52  |
Eclipse User |
|
|
|
Hi everyone,
I want to define an XPand template for a rule which is defined as follows
in XText:
----------------------------------------------------------
import "http://q-impress.eu/samm/staticstructure" as refn_staticstructure
..
..
Entity returns refn_core::Entity:
(NamedEntity | Connector | EndPoint | HardwareDescriptor)
;
NamedEntity returns refn_core::NamedEntity:
ComponentType | Type
;
..
..
PrimitiveComponent returns refn_staticstructure::PrimitiveComponent:
'PrimitiveComponent' id=STRING ':' name=STRING '{'
//parent attrib(s)
'doc:' documentation=STRING';'
//class specific attributes
'reqd:' (required+=InterfacePort)* ';'
'prov:'(provided+=InterfacePort)* ';'
'operBehv:' (OperationBehaviour+=OperationBehaviour)* ';'
'compTypeBehv:' (componentTypeBehaviour=ComponentTypeBehaviour)? ';'
'sink:' (sink+=EventPort)* ';'
'source:' (source+=EventPort)* ';'
'}'
;
-----------------------------------------------------------
The rule refers to an existing external metamodel EClass.
Now, I've defined a concrete metamodel for this grammar as:
-----------------------------------------------------------
PrimitiveComponent "pr_01":"pr_a"{
doc:"csabcb,am";
reqd:;
prov:;
operBehv:;
compTypeBehv:;
sink:;
source:;
}
-----------------------------------------------------------
I want to run the XPand generator for the above model.
My Xpand template is as follows:
-----------------------------------------------------------
«IMPORT edifice»;
«EXTENSION templates::Extensions»
«DEFINE def_outer FOR NamedEntity»
«EXPAND def_inner FOREACH elems.typeSelect(PrimitiveComponent)»
«ENDDEFINE»
«DEFINE def_inner FOR PrimitiveComponent»
«FILE name+".edifice" »
PrimitiveComponent «id»: «name»{
doc: «documentation»;
}
«ENDFILE»
«ENDDEFINE»
-----------------------------------------------------------
XPand workflow is as follows:
<workflow>
<!--bean class="org.eclipse.emf.mwe.utils.StandaloneSetup"
platformUri=".."/-->
<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" platformUri="..">
<registerGeneratedEPackage
value="eu.qimpress.samm.staticstructure.StaticstructurePackage "/>
<registerGeneratedEPackage
value="eu.qimpress.samm.behaviour.BehaviourPackage"/>
<registerGeneratedEPackage
value=" eu.qimpress.samm.deployment.targetenvironment.Targetenvironm entPackage "/>
<registerGeneratedEPackage
value="eu.qimpress.samm.deployment.hardware.HardwarePackage "/>
<registerGeneratedEPackage
value="eu.qimpress.samm.deployment.allocation.AllocationPackage "/>
<registerGeneratedEPackage
value="eu.qimpress.samm.datatypes.DatatypesPackage"/>
<registerGeneratedEPackage
value="eu.qimpress.samm.annotation.AnnotationPackage"/>
<registerGeneratedEPackage
value="eu.qimpress.samm.usagemodel.UsagemodelPackage"/>
</bean>
<component class="org.eclipse.emf.mwe.utils.DirectoryCleaner"
directory="src-gen"/>
<component class="org.eclipse.xtext.MweReader"
uri="classpath:/model/MyModel.edifice">
<!-- this class will be generated by the xtext generator -->
<register class="org.xtext.samm.EdificeStandaloneSetup"/>
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel
class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel "/>
<expand value="templates::Template::def_outer FOR NamedEntity"/>
<genPath value="src-gen"/>
</component>
</workflow>
------------------------------------------------------------ ----
But the workflow shows the following error when I run it:
1 [main] INFO eclipse.emf.mwe.core.WorkflowRunner -
------------------------------------------------------------ --------------------------
10 [main] INFO eclipse.emf.mwe.core.WorkflowRunner - EMF Modeling
Workflow Engine 0.7.0, Build v200906091110
10 [main] INFO eclipse.emf.mwe.core.WorkflowRunner - (c) 2005-2009
openarchitectureware.org and contributors
10 [main] INFO eclipse.emf.mwe.core.WorkflowRunner -
------------------------------------------------------------ --------------------------
10 [main] INFO eclipse.emf.mwe.core.WorkflowRunner - running workflow:
C:/Users/Durga/workspace_TMF/org.xtext.samm.Edifice.generato r/src/workflow/EdificeGenerator.mwe
10 [main] INFO eclipse.emf.mwe.core.WorkflowRunner -
676 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Registering
platform uri 'C:\Users\Durga\workspace_TMF'
872 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.staticstructure.StaticstructurePackage'
873 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.behaviour.BehaviourPackage'
875 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage
'eu.qimpress.samm.deployment.targetenvironment.Targetenviron mentPackage'
876 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.deployment.hardware.HardwarePackage'
877 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.deployment.allocation.AllocationPackage'
878 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.datatypes.DatatypesPackage'
888 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.annotation.AnnotationPackage'
889 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated
EPackage 'eu.qimpress.samm.usagemodel.UsagemodelPackage'
2009 [main] INFO e.core.container.CompositeComponent - DirectoryCleaner:
cleaning directory 'src-gen'
2010 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning
C:\Users\Durga\workspace_TMF\org.xtext.samm.Edifice.generato r\src-gen
2011 [main] INFO e.core.container.CompositeComponent - MweReader:
loading file from classpath:/model/MyModel.edifice
4103 [main] INFO e.core.container.CompositeComponent - Generator:
generating 'templates::Template::def_outer FOR refn_core::NamedEntity' =>
[]
4181 [main] ERROR org.eclipse.xpand2.Generator - Error in
Component of type org.eclipse.xpand2.Generator:
EvaluationException : Couldn't find enum literal or type
'refn_core::NamedEntity'
[65,22] on line 1 'refn_core::NamedEntity'
4182 [main] ERROR eclipse.emf.mwe.core.WorkflowRunner - Workflow
interrupted. Reason: Couldn't find enum literal or type
'refn_core::NamedEntity'
4182 [main] ERROR eclipse.emf.mwe.core.WorkflowRunner - [ERROR]:
Diagnosis of
eu.qimpress.samm.staticstructure.impl.PrimitiveComponentImpl @c7e8a7{classpath:/model/MyModel.edifice#pr_01}(Element:
pr_a; Reported by: MweReader: loading file from
classpath:/model/MyModel.edifice)
4182 [main] ERROR eclipse.emf.mwe.core.WorkflowRunner - [ERROR]: The
'HasToProvideOrRequireServices' invariant is violated on
'eu.qimpress.samm.staticstructure.impl.PrimitiveComponentImp l @c7e8a7{classpath:/model/MyModel.edifice#pr_01}'(Element:
pr_a; Reported by: MweReader: loading file from
classpath:/model/MyModel.edifice)
4182 [main] ERROR eclipse.emf.mwe.core.WorkflowRunner - [ERROR]: Couldn't
find enum literal or type 'refn_core::NamedEntity'(Element:
refn_core::NamedEntity; Reported by: Generator: generating
'templates::Template::def_outer FOR refn_core::NamedEntity' => [])
4182 [main] ERROR eclipse.emf.mwe.core.WorkflowRunner - [ERROR]: Couldn't
find enum literal or type 'refn_core::NamedEntity'(Element: EXPAND
templates::Template::def_outer FOR refn_core::NamedEntity; Reported by:
Generator: generating 'templates::Template::def_outer FOR
refn_core::NamedEntity' => [])
------------------------------------------------------------ ----------
I'm surprised why it's unable to determine the rule that tht references!!
Can anyone suggest??
Thanks.
Durga
|
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.32137 seconds