diff options
author | Eike Stepper | 2016-09-03 08:28:27 +0000 |
---|---|---|
committer | Eike Stepper | 2016-09-03 08:28:27 +0000 |
commit | dae48587ae2860f74865536953122a28247d4a44 (patch) | |
tree | cd0d6d0404979420b35afceef9087952b1db2064 /plugins/org.eclipse.emf.cdo.tests/src | |
parent | 2bf20add550a863a153f8e3a64737a4c7337c0ce (diff) | |
download | cdo-dae48587ae2860f74865536953122a28247d4a44.tar.gz cdo-dae48587ae2860f74865536953122a28247d4a44.tar.xz cdo-dae48587ae2860f74865536953122a28247d4a44.zip |
[467075] Provide ECrossReferenceAdapter that does not recreate removed CDOResource
https://bugs.eclipse.org/bugs/show_bug.cgi?id=467075
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.tests/src')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_467075_Test.java | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_467075_Test.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_467075_Test.java new file mode 100644 index 0000000000..a8ee01f521 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_467075_Test.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2016 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.tests.bugzilla; + +import org.eclipse.emf.cdo.eresource.CDOResource; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.tests.AbstractCDOTest; +import org.eclipse.emf.cdo.tests.model1.Company; +import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.cdo.util.CDOCrossReferenceAdapter; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.ECrossReferenceAdapter; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +/** + * Bug 467075 - Provide ECrossReferenceAdapter that does not recreate removed CDOResource + * + * @author Eike Stepper + */ +public class Bugzilla_467075_Test extends AbstractCDOTest +{ + public void testResourceSetRemoveCDOResource() throws Exception + { + ECrossReferenceAdapter adapter = createAdapter(); + Company company = getModel1Factory().createCompany(); + + CDOSession session = openSession(); + CDOTransaction transaction = session.openTransaction(); + CDOResource resource = transaction.createResource(getResourcePath("test1.model1")); + resource.getContents().add(company); + transaction.commit(); + + doTest(transaction.getResourceSet(), resource, adapter); + } + + public void testResourceSetRemoveXMIResource() throws Exception + { + Company company = getModel1Factory().createCompany(); + ECrossReferenceAdapter adapter = createAdapter(); + + Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE; + registry.getExtensionToFactoryMap().put("model1", new XMIResourceFactoryImpl()); + ResourceSet resourceSet = new ResourceSetImpl(); + + URI uri = URI.createFileURI(createTempFile("resource", ".model1").getCanonicalPath()); + Resource resource = resourceSet.createResource(uri); + resource.getContents().add(company); + resource.save(null); + + doTest(resourceSet, resource, adapter); + } + + private ECrossReferenceAdapter createAdapter() + { + return new CDOCrossReferenceAdapter(); + } + + private void doTest(ResourceSet resourceSet, Resource resource, ECrossReferenceAdapter adapter) + { + resource.eAdapters().add(adapter); + resourceSet.getResources().remove(resource); + resource.eAdapters().remove(adapter); + assertEquals(0, resourceSet.getResources().size()); + } +} |