public static void main(String arg[]) { ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE); Map uriMap = resourceSet.getURIConverter().getURIMap(); URI uri = URI.createURI("jar:file:/C:/org.eclipse.uml2.uml.resources_2.2.0.v200805131030.jar!/"); uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP), uri.appendSegment("libraries").appendSegment("")); uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP), uri.appendSegment("metamodels").appendSegment("")); uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP), uri.appendSegment("profiles").appendSegment("")); System.out.println("[readMM] : try to access to " + UMLResource.UML_METAMODEL_URI); Resource res = resourceSet.getResource(URI.createURI(UMLResource.UML_METAMODEL_URI), true); EcoreUtil.resolveAll(res); System.out.println(">" + res.toString()); TreeIterator it = res.getAllContents(); while (it.hasNext()) { EObject eobj = (EObject)it.next(); System.out.println(">>" + eobj.getClass().getName() + " " + eobj.hashCode()); if (eobj.eIsProxy()) { System.out.println("proxy PROBLEM"); System.out.println(eobj.eClass().getName()); EObject eobjResolved = EcoreUtil.resolve(eobj, resourceSet); if (eobjResolved.equals(eobj)) { System.err.println("Proxy not solved"); } else { System.out.println("Proxy solved : " + eobjResolved.hashCode()); eobj = eobjResolved; } } EList listee = eobj.eClass().getEAllStructuralFeatures(); ListIterator li = listee.listIterator(); while (li.hasNext()) { EStructuralFeature esf = li.next(); try { System.out.println("\t" + esf.getName() + " : " + eobj.eClass().eGet(esf)); } catch (Exception e) {//e.printStackTrace(); } } if (eobj.eClass() instanceof EClass) {// if if (eobj.eContainer() == null) { System.out.println("this element has a null container : is it the root element? "); } } //it.prune(); } }