私は、実行時にEcoreメタモデルを作成するために変換エンジンを使用します。メタモデルを認識できるようにEMFでそのメタモデルを登録する方法を知りたいですか?プログラムでEcoreメタモデルを登録する
9
A
答えて
16
あなたのメタモデルによって生成されたコードがある場合:
// register globally the Ecore Resource Factory to the ".ecore" extension
// weird that we need to do this, but well...
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(
"ecore", new EcoreResourceFactoryImpl());
ResourceSet rs = new ResourceSetImpl();
// enable extended metadata
final ExtendedMetaData extendedMetaData = new BasicExtendedMetaData(rs.getPackageRegistry());
rs.getLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA,
extendedMetaData);
Resource r = rs.getResource(uriOfYourModel, true);
EObject eObject = r.getContents().get(0);
if (eObject instanceof EPackage) {
EPackage p = (EPackage)eObject;
rs.getPackageRegistry().put(p.getNsURI(), p);
}
:あなただけ
.ecore
ファイルがある場合
resourceSet.getPackageRegistry()
.put(org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eINSTANCE.getNsURI()
, org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eINSTANCE);
(ここでは "genmodel" メタモデル用)
を
registerEcorePackages()
、uという名前のこのコードの詳細はhereですワークスペース(ワークスペースのフルパスを含む)に.ecore
ファイルをカスタムパッケージレジストリに登録してください。 EMFグローバルパッケージレジストリにメタモデルを登録する場合は、resourceSet.getPackageRegistry()
をEPackage.Registry.INSTANCE
に置き換えてください。
1
私はそれを動作させるためのビット@sbegaudeauからコードを変更する必要がありました:
が
またEPackage.Registry.INSTANCE.put(p.getNsURI(), p);
と
rs.getPackageRegistry().put(p.getNsURI(), p);
を交換し、何とか私は登録できません。 .ecoreタイプ。 "*"を使用していた:
関連する問題
- 1. CRMフィールドをプログラムで登録する
- 2. C#でExcel UDFをプログラムで無効/登録を解除する
- 3. .NETでUACアクティベーションなしでプログラムでDLLを登録する
- 4. ecoreを別のecoreにマッピングする
- 5. データベースに登録する登録フォームPHP
- 6. ユーレカサーバーから登録されたインスタンスをプログラムで削除する
- 7. プログラムでウィジェットの登録を解除する
- 8. Pytestプラグインにフィクスチャをプログラムで登録する
- 9. django-tastypie APIを使用してプログラムでユーザーを登録または登録する方法は?
- 10. ユーザー10人分のユーザー登録プログラム
- 11. イメージを手動で登録する方法(イメージ登録)
- 12. JQuery Mobileでドロップダウンメニューの登録アクションを登録するには?
- 13. WindowsセットアッププロジェクトでDLLを登録および登録解除する
- 14. Rails 3段階の登録で登録
- 15. アズールボットチャンネルチャンネル登録のブランクで登録
- 16. 登録する
- 17. ジャンゴ・登録オーバーライド登録フォーム
- 18. プログラムでACTION_BOOT_COMPLETEDを登録しています
- 19. AndroidデバイスにGoogleアカウントをプログラムで登録しています
- 20. Spring 5:プログラムで汎用Beanを登録します。
- 21. XTextは、DSLスクリプトをEcoreモデルにプログラムで解析します。
- 22. Facebook登録プラグイン:登録ライフサイクル管理(登録解除)
- 23. AbstractMongoEventListenerをプログラムで登録するにはどうすればよいですか?
- 24. 登録するコールバック
- 25. イベントハンドラを登録/登録解除する一般的な方法
- 26. 遅れ登録とdjango登録を統合するポストメソッド
- 27. 登録解除後にユーザーをMailChimpリストに登録する
- 28. 聴覚を春の@登録可能に登録する方法
- 29. カスタム登録フォームの迷惑メール登録を停止する
- 30. Asteriskの登録/登録解除をMySQLに保存する
あなたの答えは本当にありがとうStephane :) – capint
SUPERB ANSWER !!!!!!ありがとうStephane!十分に感謝することはできません..... "ecoreファイル"テクニックは、私が探しているものです! –
こんにちは、ありがとうございました!コードを修正する必要がありました。詳細は私の答えを見てください。 – Andrei