Using EMF, I'd like to define an attribute whose data type (EType) is external to my EMF model. That is, the type I want is a normal hand-coded Java class that is not part of my EMF model. Using AnySimpleType
is a last resort. I want more type-safety (and less type casting) than using a generic Object
provides.
Eclipse's Properties editor restricts EType to a predefined set of values. I can neither enter my own class name nor find a way to add the class I want to the list of options.
Assuming you're using Xcore as your modelling language, then use
Now
Date
can be used as a data type for attributes in line withString
andint
.You do the same with Ecore, except that you don't have to explicitly import the type first - e.g.
I am using Eclipse Kepler with EMF 2.9.1.
Adding to Michael's answer, in the Ecore Model Editor you can just right click and choose
New Child -> EData Type
and then fill in your values in the Properties view (Name, Instance Type Name). So you don't have to do add it manually anymore.
You can add a data type to eCore models by manually adding an
eClassifiers
entry to the *.ecore file. (I was unable to find a mechanism to do this through the Eclipse UI.)For example:
This will make the class available as an option for the EType in the Properties editor for EAttributes. It does not appear to make it available for EReferences.