blob: 403754b73a095388e04d33983f0419c1618bc7ed [file] [log] [blame]
/*
* Copyright (c) 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:
* Esteban Dugueperoux - initial API and implementation
*/
package org.eclipse.emf.cdo.tests.bugzilla;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.net4j.CDONet4jUtil;
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.Requires;
import org.eclipse.emf.cdo.tests.config.impl.RepositoryConfig;
import org.eclipse.emf.cdo.util.CDOURIData;
import org.eclipse.emf.cdo.view.CDOView;
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.xmi.XMIResource;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import java.util.Collections;
/**
* Bug 458149 about {@link CDOResource#getURI()} call when the {@link CDOResource} is removed from its {@link ResourceSet}.
*
* @author Esteban Dugueperoux
*/
@Requires("TCP")
public class Bugzilla_458149_Test extends AbstractCDOTest
{
/**
* Test {@link CDOResource#getURI()} when the resource is in a {@link ResourceSet} and also once removed from it.
*/
public void testCDOResource_getURI() throws Exception
{
getRepository();
ResourceSet resourceSet = new ResourceSetImpl();
URI sharedResourceURI = URI.createURI(CDONet4jUtil.PROTOCOL_TCP + "://localhost/" + RepositoryConfig.REPOSITORY_NAME
+ getResourcePath("/sharedResource")).appendQuery(CDOURIData.TRANSACTIONAL_PARAMETER + "=true");
Resource sharedResource = resourceSet.createResource(sharedResourceURI);
sharedResource.save(Collections.emptyMap());
assertEquals(sharedResourceURI, sharedResource.getURI());
CDOView view = ((CDOResource)sharedResource).cdoView();
view.close();
view.getSession().close();
resourceSet.getResources().remove(sharedResource);
assertEquals(sharedResourceURI, sharedResource.getURI());
}
/**
* Test {@link XMIResource#getURI()} when the resource is in a {@link ResourceSet} and also once removed from it.
*/
public void testXMIResource_getURI() throws Exception
{
Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE;
registry.getExtensionToFactoryMap().put("model1", new XMIResourceFactoryImpl());
ResourceSet resourceSet = new ResourceSetImpl();
URI localResourceURI = URI.createFileURI(createTempFile("resource", ".model1").getCanonicalPath());
Resource localResource = resourceSet.createResource(localResourceURI);
localResource.save(Collections.emptyMap());
assertEquals(localResourceURI, localResource.getURI());
resourceSet.getResources().remove(localResource);
assertEquals(localResourceURI, localResource.getURI());
}
}