cap*_*int 9 eclipse eclipse-emf eclipse-emf-ecore
我使用转换引擎在运行时创建一个Ecore元模型,我想知道我们如何使用EMF注册该元模型,以便它可以识别元模型?
sbe*_*eau 16
如果您拥有元模型生成的代码:
resourceSet.getPackageRegistry()
.put(org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eINSTANCE.getNsURI()
, org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage.eINSTANCE);
Run Code Online (Sandbox Code Playgroud)
(这里是"genmodel"元模型)
如果你只有这个.ecore文件:
// 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);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用名为的方法在此处找到有关此代码的更多信息registerEcorePackages(),用于.ecore在我们的自定义程序包注册表中在工作区中注册文件(带有工作区完整路径).如果要在EMF全局包注册表中注册元模型,请替换resourceSet.getPackageRegistry()为EPackage.Registry.INSTANCE.
| 归档时间: |
|
| 查看次数: |
5618 次 |
| 最近记录: |