blob: 356269d37da3004773aa1da64baeb6506d91f2e2 [file] [log] [blame]
/*
* Copyright (c) 2013 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:
* Christian W. Damus (CEA) - 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.config.IModelConfig;
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest.Requires;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcoreFactory;
/**
* Bug 403681: Tests the persistence of the {@linkplain EStructuralFeature#getEType() eType} references
* (derived from {@linkplain EStructuralFeature#getEGenericType() eGenericType}) of Ecore features.
*
* @author Christian W. Damus (CEA)
*/
@Requires(IModelConfig.CAPABILITY_LEGACY)
public class Bugzilla_403681_Test extends AbstractCDOTest
{
public void testImportEStructuralFeatureTypes() throws Exception
{
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("localtest.ecore"));
// Add the package
resource.getContents().add(createTestPackage());
transaction.commit();
transaction.close();
// Load the package again in a new transaction
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("localtest.ecore"));
assertEquals(resource.getContents().isEmpty(), false);
EPackage ePackage = (EPackage)resource.getContents().get(0);
for (EClassifier next : ePackage.getEClassifiers())
{
if (next instanceof EClass)
{
for (EStructuralFeature feature : ((EClass)next).getEStructuralFeatures())
{
assertNotNull("EStructuralFeature is missing its eType", feature.getEType());
}
}
}
}
protected EPackage createTestPackage()
{
EPackage result = createUniquePackage();
EClass classA = EcoreFactory.eINSTANCE.createEClass();
classA.setName("A");
result.getEClassifiers().add(classA);
EClass classB = EcoreFactory.eINSTANCE.createEClass();
classB.setName("B");
result.getEClassifiers().add(classB);
EReference b_a = EcoreFactory.eINSTANCE.createEReference();
b_a.setName("a");
b_a.setLowerBound(0);
b_a.setEType(classA);
classB.getEStructuralFeatures().add(b_a);
return result;
}
}