Wie erstelle ich ein EAttribute, dessen Datentyp keine EMF-Klasse ist?

8

Mit EMF möchte ich ein Attribut definieren, dessen Datentyp (EType) extern zu meinem EMF-Modell ist. Das heißt, der Typ, den ich möchte, ist eine normale handcodierte Java-Klasse, die nicht Teil meines EMF-Modells ist. Die Verwendung von AnySimpleType ist ein letzter Ausweg. Ich möchte mehr Typ-Sicherheit (und weniger Typ Casting) als die Verwendung einer generischen Object bietet.

Der Eclipse-Eigenschaften-Editor beschränkt EType auf einen vordefinierten Satz von Werten. Ich kann weder meinen eigenen Klassennamen eingeben, noch finde ich eine Möglichkeit, die gewünschte Klasse zur Liste der Optionen hinzuzufügen.

    
Michael Carman 18.09.2013, 14:01
quelle

3 Antworten

6

Sie können eCore-Modellen einen Datentyp hinzufügen, indem Sie einen eClassifiers -Eintrag manuell zur * .ecore-Datei hinzufügen. (Ich konnte über die Eclipse-Benutzeroberfläche keinen Mechanismus dafür finden.)

Zum Beispiel:

%Vor%

Dadurch wird die Klasse als Option für den EType im Eigenschafteneditor für EAttributes verfügbar gemacht. Es scheint es nicht für EReferences verfügbar zu machen.

    
Michael Carman 23.09.2013, 15:13
quelle
4

Wenn Sie Xcore als Modellierungssprache verwenden, verwenden Sie

%Vor%

Jetzt kann Date als Datentyp für Attribute in Verbindung mit String und int verwendet werden.

Sie machen dasselbe mit Ecore, außer dass Sie den Typ nicht zuerst explizit importieren müssen - z. B.

%Vor%     
Tonny Madsen 18.09.2013 14:12
quelle
4

Ich verwende Eclipse Kepler mit EMF 2.9.1.

Wenn Sie Michael's Antwort hinzufügen, können Sie im Ecore Model Editor einfach mit der rechten Maustaste klicken und

auswählen

Neues Kind - & gt; EDatentyp

und geben Sie dann Ihre Werte in der Eigenschaftenansicht ein (Name, Name des Instanztyps). Sie müssen es also nicht mehr manuell hinzufügen.

    
Lukas Z. 25.02.2014 14:49
quelle

Tags und Links