Xpand Anfäger Problem

manius

Mitglied
Servus,
ich versuche gerade meine erste Schritte mit xpand leider bin stecken geblieben, vielleicht hat jemand ein Tipp für mich ....
habe mir xpand-example als Vorlage genommen und versucht an meine Bedürfnisse anzupassen...

bekomme aber :
1093 ERROR WorkflowRunner - Workflow interrupted. Reason: Couldn't load resource under platform:/resource/sm.gen.router.converter/src/mytest.smro : org.eclipse.emf.ecore.xmi.ClassNotFoundException: Class 'RootDiagram' is not found or is abstract. (platform:/resource/sm.gen.router.converter/src/mytest.smro, 2, 162)

meine mwe-datei:
[XML]<?xml version="1.0"?>
<workflow>
<property name="model" value="sm.gen.router.converter/src/mytest.smro"/>
<property name="src-gen" value="src-gen" />

<!-- set up EMF for standalone execution -->
<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
<platformUri value=".."/>
</bean>

<!-- instantiate metamodel -->
<bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
<!-- <expand value="templates::Root::Root FOR RootDiagram"/> -->

<!-- load model and store it in slot 'model' -->
<component class="org.eclipse.emf.mwe.utils.Reader">
<uri value="platform:/resource/${model}" />
<modelSlot value="model" />
</component>

<!-- generate code -->
<component class="org.eclipse.xpand2.Generator">
<fileEncoding value="ISO-8859-1"/>
<metaModel idRef="mm_emf"/>
<expand value="template::NewTemplateFile::main FOR model" />
<outlet path="${src-gen}" >
</outlet>
</component>
</workflow>[/XML]


meine NewTeplateFile.xpt:
Code:
«IMPORT smro»

«EXTENSION template::GeneratorExtensions»

«DEFINE main FOR smro::RootDiagram»
	«FILE "test/main.c" » «ENDFILE»
	«EXPAND javaClass FOREACH this.logikobjekte»	
	«EXPAND javaClass FOREACH this.logikobjekteconn»
«ENDDEFINE»

«DEFINE javaClass FOR smro::LogikObjekte»
	«FILE name+".java"»
		public class «name» {
		}
	«ENDFILE»
«ENDDEFINE»

«DEFINE javaClass FOR smro::LogikObjektConn»
	«FILE name+".java"»
		public class «name» {
		}
	«ENDFILE»
«ENDDEFINE»

«ENDDEFINE»


meine xmi-datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<router1000.smro:RootDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:router1000.smro="http://defaultname/1.0">
  <logikobjekteconn xsi:type="router1000.smro:IO_Input"/>
  <logikobjekte xsi:type="router1000.smro:IO_Init"/>
</router1000.smro:RootDiagram>




für eine oder zwei Ideen wäre ich sehr dankbar

Gruß
 

Anhänge

Hi,
.... hat sich erledigt!
es fehlte bzw. war falsch die Referenz auf das ecore-file. habe vorläufig dies im die xmi-datei reingeschrieben und jetzt funtz's 🙂

ich frage mich grade aber was anderes: welchen Vorteil habe ich beim benutzen von Xpand?
wäre nicht einfacher das programatisch zu lösen? will nur c-code aus meinem model generieren....
habe ich beim xpand Unterstützung für "@generated NOT" ?
bin erst seit ein paar tagen dran also noch nicht in die Tiefen durchgedrungen....🙂
scheint mir auf den ersten Blick eher komplizierter zu sein oder täuche ich mich?

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Hi SirWayne,

nach etwas googeln und aus deiner Antwort, entnehme ich das das Problem programmatisch zu lösen gar nicht soo abwegig ist.
Nichtsdestotrotz, habe ich mich aber etwas durchgebissen und finde jetzt xpand,xtend richtig sexy…:toll: (…da kann ich notfalls auch java nutzen…)

übrigens danke SirWayne dass du deine Fragen auch manchmal selber antwortest, hat mir schon mal geholfen …..

Gruß
 

Zurück
Oben