niedziela, 18 października 2009

UML w XPand project

Podczas próby użycia UMLowego modelu w projekcie Xpand otrzymałem błąd:

SEVERE: org.eclipse.emf.ecore.xmi.PackageNotFoundException: Package with uri 'http://www.eclipse.org/uml2/3.0.0/UML' not found.


Rozwiązaniem jest następująca modyfikacja definicji workspace:

<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
<platformUri value=".."/>
<registerGeneratedEPackage value="org.eclipse.uml2.uml.UMLPackage"/>
</bean>


oraz dodanie
org.eclipse.uml2.uml,
org.eclipse.uml2.common

w sekcji Require-Bundle w MANIFEST.MF

Błąd w Xpand Project

Po integracji openarchitectureware w ramach projektu eclipse pojawił się błąd w działaniu kreatora tworzącego nowy projekt. Błąd objawia się logiem:

"SEVERE: [ERROR]: Class not found: 'org.eclipse.mwe.emf.StandaloneSetup'"


Rozwiazanie z forum eclipse:

Otworzyc plik META-INF/MANIFEST.MF, sekcje "Require-Bundle" wyedytowac nastepujaco:

Require-Bundle: org.eclipse.xpand,
org.eclipse.xtend,
org.eclipse.xtend.typesystem.emf,
org.eclipse.emf.mwe.utils;bundle-version="0.7.2",
org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
org.eclipse.jface.text;bundle-version="3.5.0",
org.antlr.runtime;bundle-version="3.0.0",
com.ibm.icu;bundle-version="4.0.1",
org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.jdt.core;bundle-version="3.5.0"


A następnie zastąpić zawartość pliku generator.mwe na poniższą:

<?xml version="1.0"?>
<workflow>
<property name="model" value="my.generator.projectxxx/src/Model.xmi" />
<property name="src-gen" value="src-gen" />

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

<!-- 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>

<!-- check model -->
<component class="org.eclipse.xtend.check.CheckComponent">
<metaModel id="mm"
class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
<checkFile value="metamodel::Checks" />
<emfAllChildrenSlot value="model" />
</component>

<!-- generate code -->
<component class="org.eclipse.xpand2.Generator">
<metaModel idRef="mm"/>
<expand
value="template::Template::main FOR model" />
<outlet path="${src-gen}" >
<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
</outlet>
</component>
</workflow>