package de.hub.emffrag.fragmentation; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EcoreFactory; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl; import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.junit.Test; public class EmfSaveLargeChainTest { @Test public void theTest() throws Exception { EPackage.Registry.INSTANCE.put(EcorePackage.eINSTANCE.getNsURI(), EcorePackage.eINSTANCE); Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", new ResourceFactoryImpl() { @Override public Resource createResource(URI uri) { return new BinaryResourceImpl(uri); } }); Resource resource = new ResourceSetImpl().createResource(URI.createURI("test.ecore")); EPackage thePkg = EcoreFactory.eINSTANCE.createEPackage(); resource.getContents().add(thePkg); thePkg.setName("ThePkg"); EClass lastClass = null; for (int i = 0; i < 10000; i++) { EClass newClass = EcoreFactory.eINSTANCE.createEClass(); newClass.setName("Class" + i); thePkg.getEClassifiers().add(newClass); if (lastClass != null) { EReference ref = EcoreFactory.eINSTANCE.createEReference(); ref.setName("ref"); ref.setEType(newClass); lastClass.getEStructuralFeatures().add(ref); } lastClass = newClass; } resource.save(null); } }