Я хочу использовать EMF для генерации кода, поэтому я написал несколько методов для загрузки моего файла UML2, который я сгенерировал сам. Это прекрасно работает со следующим кодом:
protected void registerResources() {
resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
String resourcesJarPath = Thread.currentThread().getContextClassLoader().getResource("org.eclipse.uml2.uml.resources_2.2.0.v200805131030").toExternalForm();
URI baseUri = URI.createURI(resourcesJarPath);
uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP), baseUri.appendSegment("libraries").appendSegment(""));
uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP), baseUri.appendSegment("metamodels").appendSegment(""));
uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP), baseUri.appendSegment("profiles").appendSegment(""));
}
public Package loadPackage(URI uri) {
Resource resource = resourceSet.getResource(uri, true);
return (Package) EcoreUtil.getObjectByType(resource.getContents(), UMLPackage.Literals.PACKAGE);
}
Но теперь я хотел экспортировать модель Magicdraw-Domain в EMF UML2 XMI, и там я получил 5 файлов. Один проект.uml и 4 файла профиля
Поэтому, если я хочу загрузить project.uml с помощью loadPackageclass, мой пакет будет нулевым.
У кого-нибудь есть пример приложения, как загрузить экспортированную MagicDraw UML DomainModel?
Dominik