6. Eclipse Modeling
Framework
• Create Ecore models
• from Java, XSD, UML, MOF
• or from scratch
7. Eclipse Modeling
Framework
• Create Ecore models
• from Java, XSD, UML, MOF
• or from scratch
• Generate Java-Code from Ecore
8. Eclipse Modeling
Framework
• Create Ecore models
• from Java, XSD, UML, MOF
• or from scratch
• Generate Java-Code from Ecore
• Runtime library to process Ecore models
and instances
14. Ecore Instances
• EObject
• Instance of an EClass
• Values for EAttributes
• References for EReferences
15. Ecore Instances
• EObject
• Instance of an EClass
• Values for EAttributes
• References for EReferences
• Ecore is self-describing
16. Ecore Instances
• EObject
• Instance of an EClass
• Values for EAttributes
• References for EReferences
• Ecore is self-describing
• EClass, EPackage etc. extend EObject
24. References
Resource
Element
Element
Element
Element Element
Element
Element Element
Element Element
Element
Element
Element
Element Element
Element Element
Element
Element Element
Element Element Element
Element
Element
Element
Element
Element Element Element
Element Element
Element Element
Element
25. References
Resource
Element
Element
Element
Element Element
Containment
Element
Element Element
Element Element
Element
Element
Element
Element Element
Element Element
Element
Element Element
Element Element Element
Element
Element
Element
Element
Element Element Element
Element Element
Element Element
Element
26. References
Resource
Element
Element
Element
Element Element
Containment
Element
Element Element
Element Element
Element
Element
Element
Element Element
Element Element
Element
Element Element
Element Element Element
Element
Element
Element
Element
Element Element Element
Element Element
Element Element
Element
Cross-References
27. References
Resource
Resource
Containment
Element
Element
Element
Element Element
Containment
Element
Element Element
Element Element
Element
Element
Element
Element Element
Element Element
Element
Element Element
Element Element Element
Element
Element
Element
Element
Element Element Element
Element Element
Element Element
Element
Cross-References
33. Resource
Element
Element
Element Element
Element
Element
Element
Element
Element Element
Element
Element
Element
Element Element
Element
Element
Element Element
Element
Element
Element Element
Element
Element
Element
Element Element
Element
34. ResourceSet
Resource Resource
Resource Resource
Element Element
Element Element
Element
Element Element
Element Element Element
Element Element
Element Element Element
Element Element
Element Element
Element Element
Element Element
Element Element Element Element
Element Element
36. Proxy
EObject
• Not yet loaded EObject
eIsProxy(): boolean
• Instantiated on load for InternalEObject
external reference
eProxyURI(): String
eSetProxyURI(String)
• eProxyURI attribute set
• Replaced on resolution
EObjectImpl
EcoreUtil
resolve(EObject, ResourceSet)
resolve(EObject, Resource)
resolve(EObject, EObject)
37. Proxy Resolution
ResourceSet
Resource
PROXY
Element
Element
Element Element
38. Proxy Resolution
ResourceSet
Resource
PROXY
Element
Element
Element Element
39. Proxy Resolution
ResourceSet
Resource Resource
PROXY
Element
Element
Element Element
40. Proxy Resolution
ResourceSet
Resource Resource
Element
PROXY
Element
Element
Element
Element Element
Element Element
Element
41. Proxy Resolution
ResourceSet
Resource Resource
Element
PROXY
Element
Element
Element
Element Element
Element Element
Element
42. How about unloading?
ResourceSet
Resource
Resource Resource
(unloaded)
PROXY
Element
Element
PROXY
Element
Element
Element Element
PROXY PROXY
Element Element
PROXY
Element
43. How about unloading?
ResourceSet
Resource
Resource Resource
(unloaded)
PROXY
Element
Element
PROXY
Element
Element
Element Element
PROXY PROXY
Element Element
PROXY
Element
44. How about unloading?
ResourceSet
Resource
Resource Resource
(unloaded)
PROXY
Element PROXY
Element
PROXY
Element PROXY
Element
Element Element
PROXY PROXY
Element Element PROXY PROXY
PROXY
Element PROXY
45. Lazy Loading
• Proxy Resolution / Lazy Loading
• Transparently when navigating references
• Unload
• Proxifies elements
• Keeps elements connected by default
46. Enabling Proxies
• For cross-references
• Set
EResource.isResolveProxies
• For containment references
• Additionally set
GenModel.isContainmentProxies
47. eProxyURI
• Resource URI + Fragment
[scheme:][//authority][/path][#fragment]
• Examples:
http://www.itemis.de/files/model.ecore#/
file:/Users/koehnlein/test.xmi#/children.0
platform:/resource/myproject/m2.uml#12345126
50. Fragment Paths
::Resource
uri=quot;http://www.itemis.de/model.treequot;
• Example
0
::Node
• #/0/children.3
• Compact
children
• Fragile with respect
.1 .2 .3
::Node
to reorderig
::Node
::Node
51. Fragment Paths With Keys
• Define EAttribute as key
::Resource
uri=quot;http://www.itemis.de/model.treequot;
for EReference
0
• Example
::Node
name=quot;rootquot;
• name key of children
children
•
.Sven .Peter .Ed
#/0/children.Ed
::Node
name=quot;Svenquot;
• Assert no collisions !
::Node
name=quot;Peterquot;
::Node
name=quot;Edquot;
52. EAttributes as ID
::Resource
uri=quot;http://www.itemis.de/model.treequot;
• Set ID flag on EAttribute
0
• Example
::Node
index=0
• index defined as ID
• #3
1 2 3
::Node
• Initialize without collisions
index=1
::Node
index=2
::Node
index=3
55. ECrossReferenceAdapter
Adapter
notifyChanged(Notification)
isAdapterForType(Object): boolean
• Works for loaded
Resources within EContentAdapter
a ResourceSet
ECrossReferenceAdapter
getInverseReferences(EObject): List<Setting>
getNonNavigableReferences(EObject): List<Setting>
56. EMF Index
• Indexes all resources in workspace
• Query elements and cross-references
57. EMF Index
• Indexes all resources in workspace
• Query elements and cross-references
Load
Resources
65. Global Singletons
• Configured with Eclipse extensions
• EPackage.Registry:
Dynamic and static Ecore models
• Resource.Factory.Registry
Resource implementations
66. Global Singletons
• Configured with Eclipse extensions
• EPackage.Registry:
Dynamic and static Ecore models
• Resource.Factory.Registry
Resource implementations
• (Extensible)URIConverter
67. Global Singletons
• Configured with Eclipse extensions
• EPackage.Registry:
Dynamic and static Ecore models
• Resource.Factory.Registry Override
Resource implementations in
• (Extensible)URIConverter Resource
Set