blob: 5f82661dd57637d384a1f7695ce4e2875a321a7e [file] [log] [blame]
/*
* Copyright (c) 2011, 2012, 2015 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.getContents().size();
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.getContents().size();
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.getContents().size();
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.getContents().size();
assertClean(resource3, transaction);
resource4.getContents().size();
assertClean(resource4, transaction);
}
}