Bonjour,
je cherche des pistes pour effectuer des checks sur mon modèle EMF au runtime (par exemple, obtenir l'arbre d'héritage d'un objet).
Est-ce possible ? Par quel moyen ?
Merci, alt3.
Version imprimable
Bonjour,
je cherche des pistes pour effectuer des checks sur mon modèle EMF au runtime (par exemple, obtenir l'arbre d'héritage d'un objet).
Est-ce possible ? Par quel moyen ?
Merci, alt3.
Bonjour,
tu peux utiliser eContainer et eAllContents je pense
Il ne me semble pas (ou je n'ai pas été clair):
Je veux obtenir des relations de dérivation entre objets, pas des informations de composition ou d'agrégation - ce que me fournissent eContainer et eAllContents.
Ces méthodes donnent accès à des informations sur des instances de classes.
Or, je veux des informations sur les classes elles même.
ok alors tu as un eClass et un eContainingFeature si je me souviens bien
Salut
D'un côté il faut que tu précises ta question ;) parce que l'arbre d'héritage d'un objet ne signifie pas grand chose. Au mieux, tu peux récupérer tous l'arbre d'héritage du type de l'objet avec :
Si tu veux un arbre (au sens structure de données) il faut utiliser getESuperTypes() et itérer pour obtenir les niveaux supérieurs.Code:myEObject.eClass().getEAllSuperTypes()
Si tu veux récupérer le méta modèle :
Si tu veux récupérer tous les types (instance de EClassifier) du méta modèle :Code:myEObject.eClass().getEPackage()
Si c'est autre chose, il faut préciser parce que dans l'état ça ne vaut pas dire grand chose.Code:myEObject.eClass().getEPackage().getEClassifiers()
Si c'est pour faire du check sur la cohérence d'un modèle il faut se tourner vers OCL et/ou EMF Validation (qui a un support pour OCL et Java).
Pour du requêtage il y a plusieurs solutions (Java pur avec API EMF, EMF Query, OCL)
Yann