# Xpand Anfäger Problem



## manius (3. Apr 2011)

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:
	
	
	
	





```
«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:

```
<?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ß


----------



## manius (5. Apr 2011)

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ß


----------



## Gast2 (5. Apr 2011)

manius hat gesagt.:


> will nur c-code aus meinem model generieren....



he????
[XML]
«FILE name+".java"»

[/XML]



manius hat gesagt.:


> ich frage mich grade aber was anderes: welchen Vorteil habe ich beim benutzen von Xpand?
> wäre nicht einfacher das programatisch zu lösen?


Gegenfrage wieviel Files, Klassen oder sonstiges willst du den generieren? Bei 2 Files lohnt es sich nicht


----------



## manius (15. Apr 2011)

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ß


----------

