| /* |
| * Copyright (c) 2013 Esteban Dugueperoux (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 |
| * Christian W. Damus (CEA) - adapted to ensure clear separation of native and legacy models |
| */ |
| 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.model6.CanReferenceLegacy; |
| import org.eclipse.emf.cdo.transaction.CDOTransaction; |
| |
| import org.eclipse.emf.ecore.EAnnotation; |
| import org.eclipse.emf.ecore.EcoreFactory; |
| |
| import java.util.Arrays; |
| |
| /** |
| * Bug 400236. |
| * |
| * @author Esteban Dugueperoux |
| */ |
| public class Bugzilla_400236_Test extends AbstractCDOTest |
| { |
| public void testCommit() throws Exception |
| { |
| CDOSession session = openSession(); |
| CDOTransaction transaction = session.openTransaction(); |
| CDOResource resourceA = transaction.createResource(getResourcePath("test1")); |
| CDOResource resourceB = transaction.createResource(getResourcePath("test2")); |
| |
| CanReferenceLegacy ref1 = getModel6Factory().createCanReferenceLegacy(); |
| EAnnotation annot1 = EcoreFactory.eINSTANCE.createEAnnotation(); // Legacy object |
| annot1.setSource("annot1"); |
| ref1.setSingleContainment(annot1); |
| EAnnotation annot2 = EcoreFactory.eINSTANCE.createEAnnotation(); // Legacy object |
| annot2.setSource("annot2"); |
| ref1.getMultipleContainment().add(annot2); |
| |
| CanReferenceLegacy ref2 = getModel6Factory().createCanReferenceLegacy(); |
| ref2.setSingleReference(annot1); |
| ref2.getMultipleReference().add(annot2); |
| |
| resourceA.getContents().add(ref1); |
| resourceB.getContents().add(ref2); |
| transaction.commit(); |
| session.close(); |
| |
| session = openSession(); |
| transaction = session.openTransaction(); |
| resourceA = transaction.getResource(getResourcePath("test1")); |
| resourceB = transaction.getResource(getResourcePath("test2")); |
| ref1 = (CanReferenceLegacy)resourceA.getContents().get(0); |
| ref2 = (CanReferenceLegacy)resourceB.getContents().get(0); |
| |
| annot1 = transaction.getObject(annot1); |
| annot2 = transaction.getObject(annot2); |
| |
| EAnnotation annot3 = EcoreFactory.eINSTANCE.createEAnnotation(); |
| annot3.setSource("annot3"); |
| |
| ref1.getMultipleContainment().add(annot3); |
| ref2.getMultipleReference().add(annot3); |
| |
| assertSame(annot1, ref2.getSingleReference()); |
| assertSame(ref1.getSingleContainment(), ref2.getSingleReference()); |
| assertEquals(Arrays.asList(annot2, annot3), ref2.getMultipleReference()); |
| assertEquals(ref1.getMultipleContainment(), ref2.getMultipleReference()); |
| } |
| } |