/** | |
* Copyright (c) 2004 - 2011 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: | |
* Victor Roldan Betancort - 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.common.util.URI; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.emf.ecore.resource.Resource; | |
import org.eclipse.emf.ecore.resource.ResourceSet; | |
/** | |
* Cannot load resource on a previously cleared ResourceSet | |
* <p> | |
* See Bug 338921 | |
* | |
* @author Victor Roldan Betancort | |
*/ | |
public class Bugzilla_338921_Test extends AbstractCDOTest | |
{ | |
public void testLoadResourceAfterSingleRemoval() throws Exception | |
{ | |
Company company = getModel1Factory().createCompany(); | |
CDOSession session = openSession(); | |
CDOTransaction transaction = session.openTransaction(); | |
CDOResource resource = transaction.createResource(getResourcePath("/Bug338921")); | |
resource.getContents().add(company); | |
transaction.commit(); | |
URI uri = resource.getURI(); | |
ResourceSet resourceSet = resource.getResourceSet(); | |
resourceSet.getResources().remove(resource); | |
assertInvalid(resource); | |
Resource resource2 = resourceSet.getResource(uri, true); | |
assertNotNull(resource2); | |
// forcing transition from PROXY to CLEAN. Revision is loaded | |
resource2.getURI(); | |
assertClean((EObject)resource2, transaction); | |
} | |
public void testRemoveDirtyResourceOnResourceSetWithSingleResource() throws Exception | |
{ | |
Company company = getModel1Factory().createCompany(); | |
CDOSession session = openSession(); | |
CDOTransaction transaction = session.openTransaction(); | |
CDOResource resource = transaction.createResource(getResourcePath("/Bug338921")); | |
resource.getContents().add(company); | |
transaction.commit(); | |
company.setName("foobar"); | |
URI uri = resource.getURI(); | |
ResourceSet resourceSet = resource.getResourceSet(); | |
resourceSet.getResources().remove(resource); | |
Resource resource2 = resourceSet.getResource(uri, true); | |
assertNotNull(resource2); | |
// forcing transition from PROXY to CLEAN. Revision is loaded | |
resource2.getURI(); | |
assertClean((EObject)resource2, transaction); | |
} | |
public void testRemoveDirtyResourceOnResourceSetWithMultipleResource() throws Exception | |
{ | |
CDOSession session = openSession(); | |
CDOTransaction transaction = session.openTransaction(); | |
CDOResource resource1 = transaction.createResource(getResourcePath("/Bug338921/res1")); | |
CDOResource resource2 = transaction.createResource(getResourcePath("/Bug338921/res2")); | |
Company company1 = getModel1Factory().createCompany(); | |
Company company2 = getModel1Factory().createCompany(); | |
resource1.getContents().add(company1); | |
resource2.getContents().add(company2); | |
transaction.commit(); | |
company1.setName("foo"); | |
company2.setName("bar"); | |
ResourceSet resourceSet = resource1.getResourceSet(); | |
resourceSet.getResources().remove(resource1); | |
assertEquals(true, transaction.isDirty()); | |
} | |
public void testLoadResourceAfterClearOnCleanResourceSet() throws Exception | |
{ | |
Company company = getModel1Factory().createCompany(); | |
CDOSession session = openSession(); | |
CDOTransaction transaction = session.openTransaction(); | |
CDOResource resource1 = transaction.createResource(getResourcePath("/Bug338921/res1")); | |
transaction.createResource(getResourcePath("/Bug338921/res2")); | |
resource1.getContents().add(company); | |
transaction.commit(); | |
URI uri = resource1.getURI(); | |
company.setName("foobar"); | |
ResourceSet resourceSet = resource1.getResourceSet(); | |
resourceSet.getResources().clear(); | |
assertEquals(true, transaction.isDirty()); | |
assertInvalid(resource1); | |
Resource resource3 = resourceSet.getResource(uri, true); | |
assertNotNull(resource3); | |
// forcing transition from PROXY to CLEAN. Revision is loaded | |
resource3.getURI(); | |
assertClean((EObject)resource3, transaction); | |
} | |
public void testLoadResourceAfterClearOnDirtyResourceSet() throws Exception | |
{ | |
Company company = getModel1Factory().createCompany(); | |
CDOSession session = openSession(); | |
CDOTransaction transaction = session.openTransaction(); | |
CDOResource resource1 = transaction.createResource(getResourcePath("/Bug338921/res1")); | |
CDOResource resource2 = transaction.createResource(getResourcePath("/Bug338921/res2")); | |
resource1.getContents().add(company); | |
transaction.commit(); | |
URI uri1 = resource1.getURI(); | |
URI uri2 = resource2.getURI(); | |
company.setName("foobar"); | |
ResourceSet resourceSet = resource1.getResourceSet(); | |
resourceSet.getResources().clear(); | |
assertEquals(true, transaction.isDirty()); | |
assertInvalid(resource1); | |
assertInvalid(resource2); | |
CDOResource resource3 = (CDOResource)resourceSet.getResource(uri1, true); | |
CDOResource resource4 = (CDOResource)resourceSet.getResource(uri2, true); | |
assertNotNull(resource3); | |
assertNotNull(resource4); | |
// forcing transition from PROXY to CLEAN. Revision is loaded | |
resource3.getURI(); | |
assertClean(resource3, transaction); | |
resource4.getURI(); | |
assertClean(resource4, transaction); | |
} | |
} |