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<EObject> 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<EStructuralFeature> listee = eobj.eClass().getEAllStructuralFeatures();
ListIterator<EStructuralFeature> 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();
}
}