How do I create an EAttribute whose data type is not an EMF class?

后端 未结 3 2086
名媛妹妹
名媛妹妹 2021-02-09 02:38

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 m

相关标签:
3条回答
  • 2021-02-09 03:10

    Assuming you're using Xcore as your modelling language, then use

    import java.util.Date
    ...
    type Date wraps Date
    

    Now Date can be used as a data type for attributes in line with String and int.

    You do the same with Ecore, except that you don't have to explicitly import the type first - e.g.

    <eClassifiers xsi:type="ecore:EDataType" name="Date"
       instanceClassName="java.util.Date" serializable="false"/>
    
    0 讨论(0)
  • 2021-02-09 03:11

    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:

    <eClassifiers xsi:type="ecore:EDataType"
     name="MyClass" instanceClassName="my.package.MyClass"/>
    

    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.

    0 讨论(0)
  • 2021-02-09 03:11

    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.

    0 讨论(0)
提交回复
热议问题