| /* |
| * Copyright (c) 2008-2012, 2014 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: |
| * Eike Stepper - initial API and implementation |
| */ |
| package org.eclipse.emf.cdo.tests; |
| |
| import org.eclipse.emf.cdo.eresource.CDOResource; |
| import org.eclipse.emf.cdo.session.CDOSession; |
| import org.eclipse.emf.cdo.tests.model4.ContainedElementNoOpposite; |
| import org.eclipse.emf.cdo.tests.model4.GenRefMultiContained; |
| import org.eclipse.emf.cdo.tests.model4.GenRefMultiNonContained; |
| import org.eclipse.emf.cdo.tests.model4.GenRefSingleContained; |
| import org.eclipse.emf.cdo.tests.model4.GenRefSingleNonContained; |
| import org.eclipse.emf.cdo.tests.model4.ImplContainedElementNPL; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefContainer; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefContainerNPL; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefNonContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefNonContainer; |
| import org.eclipse.emf.cdo.tests.model4.ImplMultiRefNonContainerNPL; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefContainer; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefContainerNPL; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefNonContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefNonContainer; |
| import org.eclipse.emf.cdo.tests.model4.ImplSingleRefNonContainerNPL; |
| import org.eclipse.emf.cdo.tests.model4.MultiContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.MultiNonContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.RefMultiContained; |
| import org.eclipse.emf.cdo.tests.model4.RefMultiContainedNPL; |
| import org.eclipse.emf.cdo.tests.model4.RefMultiNonContained; |
| import org.eclipse.emf.cdo.tests.model4.RefMultiNonContainedNPL; |
| import org.eclipse.emf.cdo.tests.model4.RefSingleContained; |
| import org.eclipse.emf.cdo.tests.model4.RefSingleContainedNPL; |
| import org.eclipse.emf.cdo.tests.model4.RefSingleNonContained; |
| import org.eclipse.emf.cdo.tests.model4.RefSingleNonContainedNPL; |
| import org.eclipse.emf.cdo.tests.model4.SingleContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.SingleNonContainedElement; |
| import org.eclipse.emf.cdo.tests.model4.model4Factory; |
| import org.eclipse.emf.cdo.tests.model4interfaces.IContainedElementNoParentLink; |
| import org.eclipse.emf.cdo.tests.model4interfaces.IMultiRefContainedElement; |
| import org.eclipse.emf.cdo.tests.model4interfaces.IMultiRefNonContainedElement; |
| import org.eclipse.emf.cdo.tests.model4interfaces.INamedElement; |
| import org.eclipse.emf.cdo.tests.model4interfaces.ISingleRefContainedElement; |
| import org.eclipse.emf.cdo.tests.model4interfaces.ISingleRefNonContainedElement; |
| import org.eclipse.emf.cdo.transaction.CDOTransaction; |
| import org.eclipse.emf.cdo.util.CDOUtil; |
| import org.eclipse.emf.cdo.util.CommitException; |
| |
| import org.eclipse.net4j.util.WrappedException; |
| |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.ecore.EObject; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * @author Eike Stepper |
| */ |
| public class ComplexTest extends AbstractCDOTest |
| { |
| private static long uniqueCounter = System.currentTimeMillis(); |
| |
| private model4Factory factory; |
| |
| private CDOResource resource1; |
| |
| private CDOResource resource2; |
| |
| private CDOTransaction transaction; |
| |
| private CDOSession session; |
| |
| @Override |
| protected void doSetUp() throws Exception |
| { |
| super.doSetUp(); |
| String path1 = getResourcePath("/resources/folder1/res" + uniqueCounter); |
| String path2 = getResourcePath("/resources/folder2/res" + uniqueCounter); |
| ++uniqueCounter; |
| |
| init(path1, path2); |
| commit(); |
| } |
| |
| @Override |
| protected void doTearDown() throws Exception |
| { |
| factory = null; |
| session = null; |
| transaction = null; |
| resource1 = null; |
| resource2 = null; |
| super.doTearDown(); |
| } |
| |
| private void purgeCaches() |
| { |
| // according to Eike's comment at Bug 249681, client caches are |
| // ignored, if a new session is opened. |
| // server caches are wiped by the clearCache call. |
| String path1 = resource1.getPath(); |
| String path2 = resource2.getPath(); |
| |
| transaction.close(); |
| session.close(); |
| |
| clearCache(getRepository().getRevisionManager()); |
| init(path1, path2); |
| } |
| |
| private void init(String path1, String path2) |
| { |
| factory = getModel4Factory(); |
| |
| session = openSession(); |
| session.getPackageRegistry().putEPackage(getModel4InterfacesPackage()); |
| session.getPackageRegistry().putEPackage(getModel4Package()); |
| |
| transaction = session.openTransaction(); |
| |
| resource1 = transaction.getOrCreateResource(path1); |
| resource2 = transaction.getOrCreateResource(path2); |
| } |
| |
| private void commit() |
| { |
| try |
| { |
| transaction.commit(); |
| } |
| catch (CommitException ex) |
| { |
| throw WrappedException.wrap(ex); |
| } |
| } |
| |
| public void testPlainSingleNonContainedBidirectional() |
| { |
| RefSingleNonContained container = factory.createRefSingleNonContained(); |
| SingleNonContainedElement element0 = factory.createSingleNonContainedElement(); |
| element0.setName("PlainSingleNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (RefSingleNonContained)resource1.getContents().get(0); |
| element0 = (SingleNonContainedElement)resource1.getContents().get(1); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals(container, element0.getParent()); |
| assertEquals("PlainSingleNonContainedBidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| } |
| |
| public void testPlainSingleContainedBidirectional() |
| { |
| RefSingleContained container = factory.createRefSingleContained(); |
| SingleContainedElement element0 = factory.createSingleContainedElement(); |
| element0.setName("PlainSingleContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (RefSingleContained)CDOUtil.getEObject(resource1.getContents().get(0)); |
| element0 = container.getElement(); |
| |
| assertEquals(container, element0.getParent()); |
| assertEquals("PlainSingleContainedBidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0); |
| } |
| |
| public void testPlainMultiNonContainedBidirectional() |
| { |
| RefMultiNonContained container = factory.createRefMultiNonContained(); |
| MultiNonContainedElement element0 = factory.createMultiNonContainedElement(); |
| element0.setName("PlainMultiNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| MultiNonContainedElement element1 = factory.createMultiNonContainedElement(); |
| element1.setName("PlainMultiNonContainedBidirectional-Element-1"); |
| resource1.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(3, resource1.getContents().size()); |
| |
| container = (RefMultiNonContained)CDOUtil.getEObject(resource1.getContents().get(0)); |
| element0 = (MultiNonContainedElement)resource1.getContents().get(1); |
| element1 = (MultiNonContainedElement)resource1.getContents().get(2); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals(container, element0.getParent()); |
| assertEquals(container, element1.getParent()); |
| assertEquals("PlainMultiNonContainedBidirectional-Element-0", element0.getName()); |
| assertEquals("PlainMultiNonContainedBidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| assertContent(resource1, element1); |
| } |
| |
| public void testPlainMultiContainedBidirectional() |
| { |
| RefMultiContained container = factory.createRefMultiContained(); |
| MultiContainedElement element0 = factory.createMultiContainedElement(); |
| element0.setName("PlainMultiContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| MultiContainedElement element1 = factory.createMultiContainedElement(); |
| element1.setName("PlainMultiContainedBidirectional-Element-1"); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (RefMultiContained)resource1.getContents().get(0); |
| assertEquals(2, container.getElements().size()); |
| |
| element0 = container.getElements().get(0); |
| element1 = container.getElements().get(1); |
| |
| assertEquals(container, element0.getParent()); |
| assertEquals(container, element1.getParent()); |
| assertEquals("PlainMultiContainedBidirectional-Element-0", element0.getName()); |
| assertEquals("PlainMultiContainedBidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0); |
| assertContent(container, element1); |
| } |
| |
| public void testPlainSingleNonContainedUnidirectional() |
| { |
| RefSingleNonContainedNPL container = factory.createRefSingleNonContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("PlainSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (RefSingleNonContainedNPL)resource1.getContents().get(0); |
| element0 = (ContainedElementNoOpposite)resource1.getContents().get(1); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals("PlainSingleNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| } |
| |
| public void testPlainSingleContainedUnidirectional() |
| { |
| RefSingleContainedNPL container = factory.createRefSingleContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("PlainSingleContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (RefSingleContainedNPL)resource1.getContents().get(0); |
| element0 = container.getElement(); |
| |
| assertEquals("PlainSingleContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0); |
| } |
| |
| public void testPlainMultiNonContainedUnidirectional() |
| { |
| RefMultiNonContainedNPL container = factory.createRefMultiNonContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("PlainMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| ContainedElementNoOpposite element1 = factory.createContainedElementNoOpposite(); |
| element1.setName("PlainMultiNonContainedUnidirectional-Element-1"); |
| resource1.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(3, resource1.getContents().size()); |
| |
| container = (RefMultiNonContainedNPL)resource1.getContents().get(0); |
| element0 = (ContainedElementNoOpposite)resource1.getContents().get(1); |
| element1 = (ContainedElementNoOpposite)resource1.getContents().get(2); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals("PlainMultiNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("PlainMultiNonContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| assertContent(resource1, element1); |
| } |
| |
| public void testPlainMultiContainedUnidirectional() |
| { |
| RefMultiContainedNPL container = factory.createRefMultiContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("PlainMultiContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| ContainedElementNoOpposite element1 = factory.createContainedElementNoOpposite(); |
| element1.setName("PlainMultiContainedUnidirectional-Element-1"); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (RefMultiContainedNPL)resource1.getContents().get(0); |
| assertEquals(2, container.getElements().size()); |
| |
| element0 = container.getElements().get(0); |
| element1 = container.getElements().get(1); |
| |
| assertEquals("PlainMultiContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("PlainMultiContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0); |
| assertContent(container, element1); |
| } |
| |
| public void testGenRefSingleNonContainedUnidirectional() |
| { |
| GenRefSingleNonContained container = factory.createGenRefSingleNonContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("GenRefSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (GenRefSingleNonContained)resource1.getContents().get(0); |
| element0 = (ImplContainedElementNPL)resource1.getContents().get(1); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals("GenRefSingleNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| } |
| |
| public void testGenRefSingleContainedUnidirectional() |
| { |
| GenRefSingleContained container = factory.createGenRefSingleContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("GenRefSingleContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| container.setElement(element0); |
| |
| resource1.getContents().add(element0); |
| |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (GenRefSingleContained)resource1.getContents().get(0); |
| element0 = (ImplContainedElementNPL)container.getElement(); |
| |
| // assertEquals("GenRefSingleContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| // assertEquals(resource1, element0.eResource()); |
| |
| assertContent(resource1, container); |
| // assertContent(container, element0); |
| } |
| |
| public void testGenRefMultiNonContainedUnidirectional() |
| { |
| GenRefMultiNonContained container = factory.createGenRefMultiNonContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("GenRefMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("GenRefMultiNonContainedUnidirectional-Element-1"); |
| resource1.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(3, resource1.getContents().size()); |
| |
| container = (GenRefMultiNonContained)resource1.getContents().get(0); |
| element0 = (ImplContainedElementNPL)resource1.getContents().get(1); |
| element1 = (ImplContainedElementNPL)resource1.getContents().get(2); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals("GenRefMultiNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("GenRefMultiNonContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0); |
| assertContent(resource1, element1); |
| } |
| |
| public void testGenRefMultiContainedUnidirectional() |
| { |
| GenRefMultiContained container = factory.createGenRefMultiContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("GenRefMultiContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("GenRefMultiContainedUnidirectional-Element-1"); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (GenRefMultiContained)resource1.getContents().get(0); |
| assertEquals(2, container.getElements().size()); |
| |
| element0 = (ImplContainedElementNPL)container.getElements().get(0); |
| element1 = (ImplContainedElementNPL)container.getElements().get(1); |
| |
| assertEquals("GenRefMultiContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("GenRefMultiContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0.eResource()); |
| assertEquals(resource1, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0); |
| assertContent(container, element1); |
| } |
| |
| public void testIfcimplSingleNonContainedBidirectional() |
| { |
| ImplSingleRefNonContainer container = factory.createImplSingleRefNonContainer(); |
| ImplSingleRefNonContainedElement element0 = factory.createImplSingleRefNonContainedElement(); |
| element0.setName("IfcimplSingleNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (ImplSingleRefNonContainer)CDOUtil.getEObject(resource1.getContents().get(0)); |
| ISingleRefNonContainedElement element0_ = (ISingleRefNonContainedElement)resource1.getContents().get(1); |
| |
| assertEquals(element0_, container.getElement()); |
| assertEquals(container, element0_.getParent()); |
| assertEquals("IfcimplSingleNonContainedBidirectional-Element-0", |
| ((ImplSingleRefNonContainedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0_); |
| } |
| |
| public void testIfcimplSingleContainedBidirectional() |
| { |
| ImplSingleRefContainer container = factory.createImplSingleRefContainer(); |
| ImplSingleRefContainedElement element0 = factory.createImplSingleRefContainedElement(); |
| element0.setName("IfcimplSingleContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (ImplSingleRefContainer)CDOUtil.getEObject(resource1.getContents().get(0)); |
| ISingleRefContainedElement element0_ = container.getElement(); |
| |
| assertEquals(container, element0_.getParent()); |
| assertEquals("IfcimplSingleContainedBidirectional-Element-0", ((ImplSingleRefContainedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0_); |
| } |
| |
| public void testIfcimplMultiNonContainedBidirectional() |
| { |
| ImplMultiRefNonContainer container = factory.createImplMultiRefNonContainer(); |
| ImplMultiRefNonContainedElement element0 = factory.createImplMultiRefNonContainedElement(); |
| element0.setName("IfcimplMultiNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| ImplMultiRefNonContainedElement element1 = factory.createImplMultiRefNonContainedElement(); |
| element1.setName("IfcimplMultiNonContainedBidirectional-Element-1"); |
| resource1.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(3, resource1.getContents().size()); |
| |
| container = (ImplMultiRefNonContainer)resource1.getContents().get(0); |
| IMultiRefNonContainedElement element0_ = (IMultiRefNonContainedElement)resource1.getContents().get(1); |
| IMultiRefNonContainedElement element1_ = (IMultiRefNonContainedElement)resource1.getContents().get(2); |
| |
| assertEquals(element0_, container.getElements().get(0)); |
| assertEquals(element1_, container.getElements().get(1)); |
| assertEquals(container, element0_.getParent()); |
| assertEquals(container, element1_.getParent()); |
| assertEquals("IfcimplMultiNonContainedBidirectional-Element-0", |
| ((ImplMultiRefNonContainedElement)element0_).getName()); |
| assertEquals("IfcimplMultiNonContainedBidirectional-Element-1", |
| ((ImplMultiRefNonContainedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| assertEquals(resource1, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0_); |
| assertContent(resource1, element1_); |
| } |
| |
| public void testIfcimplMultiContainedBidirectional() |
| { |
| ImplMultiRefContainer container = factory.createImplMultiRefContainer(); |
| ImplMultiRefContainedElement element0 = factory.createImplMultiRefContainedElement(); |
| element0.setName("IfcimplMultiContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| ImplMultiRefContainedElement element1 = factory.createImplMultiRefContainedElement(); |
| element1.setName("IfcimplMultiContainedBidirectional-Element-1"); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (ImplMultiRefContainer)resource1.getContents().get(0); |
| assertEquals(2, container.getElements().size()); |
| |
| IMultiRefContainedElement element0_ = container.getElements().get(0); |
| IMultiRefContainedElement element1_ = container.getElements().get(1); |
| |
| assertEquals(container, element0_.getParent()); |
| assertEquals(container, element1_.getParent()); |
| assertEquals("IfcimplMultiContainedBidirectional-Element-0", ((ImplMultiRefContainedElement)element0_).getName()); |
| assertEquals("IfcimplMultiContainedBidirectional-Element-1", ((ImplMultiRefContainedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| assertEquals(resource1, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0_); |
| assertContent(container, element1_); |
| } |
| |
| public void testIfcimplSingleNonContainedUnidirectional() |
| { |
| ImplSingleRefNonContainerNPL container = factory.createImplSingleRefNonContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("IfcimplSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(2, resource1.getContents().size()); |
| |
| container = (ImplSingleRefNonContainerNPL)resource1.getContents().get(0); |
| IContainedElementNoParentLink element0_ = (IContainedElementNoParentLink)resource1.getContents().get(1); |
| |
| assertEquals(element0_, container.getElement()); |
| assertEquals("IfcimplSingleNonContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0_); |
| } |
| |
| public void testIfcimplSingleContainedUnidirectional() |
| { |
| ImplSingleRefContainerNPL container = factory.createImplSingleRefContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("IfcimplSingleContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (ImplSingleRefContainerNPL)resource1.getContents().get(0); |
| IContainedElementNoParentLink element0_ = container.getElement(); |
| |
| assertEquals("IfcimplSingleContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0_); |
| } |
| |
| public void testIfcimplMultiNonContainedUnidirectional() |
| { |
| ImplMultiRefNonContainerNPL container = factory.createImplMultiRefNonContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("IfcimplMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource1.getContents().add(element0); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("IfcimplMultiNonContainedUnidirectional-Element-1"); |
| resource1.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(3, resource1.getContents().size()); |
| |
| container = (ImplMultiRefNonContainerNPL)resource1.getContents().get(0); |
| IContainedElementNoParentLink element0_ = (IContainedElementNoParentLink)resource1.getContents().get(1); |
| IContainedElementNoParentLink element1_ = (IContainedElementNoParentLink)resource1.getContents().get(2); |
| |
| assertEquals(element0_, container.getElements().get(0)); |
| assertEquals(element1_, container.getElements().get(1)); |
| assertEquals("IfcimplMultiNonContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals("IfcimplMultiNonContainedUnidirectional-Element-1", ((INamedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| assertEquals(resource1, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource1, element0_); |
| assertContent(resource1, element1_); |
| } |
| |
| public void testIfcimplMultiContainedUnidirectional() |
| { |
| ImplMultiRefContainerNPL container = factory.createImplMultiRefContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("IfcimplMultiContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("IfcimplMultiContainedUnidirectional-Element-1"); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (ImplMultiRefContainerNPL)resource1.getContents().get(0); |
| assertEquals(2, container.getElements().size()); |
| |
| IContainedElementNoParentLink element0_ = container.getElements().get(0); |
| IContainedElementNoParentLink element1_ = container.getElements().get(1); |
| |
| assertEquals("IfcimplMultiContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals("IfcimplMultiContainedUnidirectional-Element-1", ((INamedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource1, element0_.eResource()); |
| assertEquals(resource1, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(container, element0_); |
| assertContent(container, element1_); |
| } |
| |
| public void testCrossResourcePlainSingleNonContainedBidirectional() |
| { |
| RefSingleNonContained container = factory.createRefSingleNonContained(); |
| SingleNonContainedElement element0 = factory.createSingleNonContainedElement(); |
| element0.setName("CrossResourcePlainSingleNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(1, resource2.getContents().size()); |
| |
| container = (RefSingleNonContained)CDOUtil.getEObject(resource1.getContents().get(0)); |
| element0 = (SingleNonContainedElement)resource2.getContents().get(0); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals(container, element0.getParent()); |
| assertEquals("CrossResourcePlainSingleNonContainedBidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| } |
| |
| public void testCrossResourcePlainMultiNonContainedBidirectional() |
| { |
| RefMultiNonContained container = factory.createRefMultiNonContained(); |
| MultiNonContainedElement element0 = factory.createMultiNonContainedElement(); |
| element0.setName("CrossResourcePlainMultiNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| MultiNonContainedElement element1 = factory.createMultiNonContainedElement(); |
| element1.setName("CrossResourcePlainMultiNonContainedBidirectional-Element-1"); |
| resource2.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(2, resource2.getContents().size()); |
| |
| container = (RefMultiNonContained)resource1.getContents().get(0); |
| element0 = (MultiNonContainedElement)resource2.getContents().get(0); |
| element1 = (MultiNonContainedElement)resource2.getContents().get(1); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals(container, element0.getParent()); |
| assertEquals(container, element1.getParent()); |
| assertEquals("CrossResourcePlainMultiNonContainedBidirectional-Element-0", element0.getName()); |
| assertEquals("CrossResourcePlainMultiNonContainedBidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| assertEquals(resource2, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| assertContent(resource2, element1); |
| } |
| |
| public void testCrossResourcePlainSingleNonContainedUnidirectional() |
| { |
| RefSingleNonContainedNPL container = factory.createRefSingleNonContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("CrossResourcePlainSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(1, resource2.getContents().size()); |
| |
| container = (RefSingleNonContainedNPL)resource1.getContents().get(0); |
| element0 = (ContainedElementNoOpposite)resource2.getContents().get(0); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals("CrossResourcePlainSingleNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| } |
| |
| public void testCrossResourcePlainMultiNonContainedUnidirectional() |
| { |
| RefMultiNonContainedNPL container = factory.createRefMultiNonContainedNPL(); |
| ContainedElementNoOpposite element0 = factory.createContainedElementNoOpposite(); |
| element0.setName("CrossResourcePlainMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| ContainedElementNoOpposite element1 = factory.createContainedElementNoOpposite(); |
| element1.setName("CrossResourcePlainMultiNonContainedUnidirectional-Element-1"); |
| resource2.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(2, resource2.getContents().size()); |
| |
| container = (RefMultiNonContainedNPL)resource1.getContents().get(0); |
| element0 = (ContainedElementNoOpposite)resource2.getContents().get(0); |
| element1 = (ContainedElementNoOpposite)resource2.getContents().get(1); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals("CrossResourcePlainMultiNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("CrossResourcePlainMultiNonContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| assertEquals(resource2, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| assertContent(resource2, element1); |
| } |
| |
| public void testCrossResourceGenRefSingleNonContainedUnidirectional() |
| { |
| GenRefSingleNonContained container = factory.createGenRefSingleNonContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("CrossResourceGenRefSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(1, resource2.getContents().size()); |
| |
| container = (GenRefSingleNonContained)resource1.getContents().get(0); |
| element0 = (ImplContainedElementNPL)resource2.getContents().get(0); |
| |
| assertEquals(element0, container.getElement()); |
| assertEquals("CrossResourceGenRefSingleNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| } |
| |
| public void testCrossResourceGenRefMultiNonContainedUnidirectional() |
| { |
| GenRefMultiNonContained container = factory.createGenRefMultiNonContained(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("CrossResourceGenRefMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("CrossResourceGenRefMultiNonContainedUnidirectional-Element-1"); |
| resource2.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(2, resource2.getContents().size()); |
| |
| container = (GenRefMultiNonContained)resource1.getContents().get(0); |
| element0 = (ImplContainedElementNPL)resource2.getContents().get(0); |
| element1 = (ImplContainedElementNPL)resource2.getContents().get(1); |
| |
| assertEquals(element0, container.getElements().get(0)); |
| assertEquals(element1, container.getElements().get(1)); |
| assertEquals("CrossResourceGenRefMultiNonContainedUnidirectional-Element-0", element0.getName()); |
| assertEquals("CrossResourceGenRefMultiNonContainedUnidirectional-Element-1", element1.getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0.eResource()); |
| assertEquals(resource2, element1.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0); |
| assertContent(resource2, element1); |
| } |
| |
| public void testCrossResourceIfcimplSingleNonContainedBidirectional() |
| { |
| ImplSingleRefNonContainer container = factory.createImplSingleRefNonContainer(); |
| ImplSingleRefNonContainedElement element0 = factory.createImplSingleRefNonContainedElement(); |
| element0.setName("CrossResourceIfcimplSingleNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(1, resource2.getContents().size()); |
| |
| container = (ImplSingleRefNonContainer)CDOUtil.getEObject(resource1.getContents().get(0)); |
| ISingleRefNonContainedElement element0_ = (ISingleRefNonContainedElement)resource2.getContents().get(0); |
| |
| assertEquals(element0_, container.getElement()); |
| assertEquals(container, element0_.getParent()); |
| assertEquals("CrossResourceIfcimplSingleNonContainedBidirectional-Element-0", |
| ((ImplSingleRefNonContainedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0_); |
| } |
| |
| public void testCrossResourceIfcimplMultiNonContainedBidirectional() |
| { |
| ImplMultiRefNonContainer container = factory.createImplMultiRefNonContainer(); |
| ImplMultiRefNonContainedElement element0 = factory.createImplMultiRefNonContainedElement(); |
| element0.setName("CrossResourceIfcimplMultiNonContainedBidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| ImplMultiRefNonContainedElement element1 = factory.createImplMultiRefNonContainedElement(); |
| element1.setName("CrossResourceIfcimplMultiNonContainedBidirectional-Element-1"); |
| resource2.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(2, resource2.getContents().size()); |
| |
| container = (ImplMultiRefNonContainer)resource1.getContents().get(0); |
| IMultiRefNonContainedElement element0_ = (IMultiRefNonContainedElement)resource2.getContents().get(0); |
| IMultiRefNonContainedElement element1_ = (IMultiRefNonContainedElement)resource2.getContents().get(1); |
| |
| assertEquals(element0_, container.getElements().get(0)); |
| assertEquals(element1_, container.getElements().get(1)); |
| assertEquals(container, element0_.getParent()); |
| assertEquals(container, element1_.getParent()); |
| assertEquals("CrossResourceIfcimplMultiNonContainedBidirectional-Element-0", |
| ((ImplMultiRefNonContainedElement)element0_).getName()); |
| assertEquals("CrossResourceIfcimplMultiNonContainedBidirectional-Element-1", |
| ((ImplMultiRefNonContainedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0_.eResource()); |
| assertEquals(resource2, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0_); |
| assertContent(resource2, element1_); |
| } |
| |
| public void testCrossResourceIfcimplSingleNonContainedUnidirectional() |
| { |
| ImplSingleRefNonContainerNPL container = factory.createImplSingleRefNonContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("CrossResourceIfcimplSingleNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| container.setElement(element0); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(1, resource1.getContents().size()); |
| |
| container = (ImplSingleRefNonContainerNPL)resource1.getContents().get(0); |
| IContainedElementNoParentLink element0_ = (IContainedElementNoParentLink)resource2.getContents().get(0); |
| |
| assertEquals(element0_, container.getElement()); |
| assertEquals("CrossResourceIfcimplSingleNonContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0_); |
| } |
| |
| public void testCrossResourceIfcimplMultiNonContainedUnidirectional() |
| { |
| ImplMultiRefNonContainerNPL container = factory.createImplMultiRefNonContainerNPL(); |
| ImplContainedElementNPL element0 = factory.createImplContainedElementNPL(); |
| element0.setName("CrossResourceIfcimplMultiNonContainedUnidirectional-Element-0"); |
| resource1.getContents().add(container); |
| resource2.getContents().add(element0); |
| ImplContainedElementNPL element1 = factory.createImplContainedElementNPL(); |
| element1.setName("CrossResourceIfcimplMultiNonContainedUnidirectional-Element-1"); |
| resource2.getContents().add(element1); |
| container.getElements().add(element0); |
| container.getElements().add(element1); |
| commit(); |
| |
| purgeCaches(); |
| assertEquals(1, resource1.getContents().size()); |
| assertEquals(2, resource2.getContents().size()); |
| |
| container = (ImplMultiRefNonContainerNPL)resource1.getContents().get(0); |
| IContainedElementNoParentLink element0_ = (IContainedElementNoParentLink)resource2.getContents().get(0); |
| IContainedElementNoParentLink element1_ = (IContainedElementNoParentLink)resource2.getContents().get(1); |
| |
| assertEquals(element0_, container.getElements().get(0)); |
| assertEquals(element1_, container.getElements().get(1)); |
| assertEquals("CrossResourceIfcimplMultiNonContainedUnidirectional-Element-0", ((INamedElement)element0_).getName()); |
| assertEquals("CrossResourceIfcimplMultiNonContainedUnidirectional-Element-1", ((INamedElement)element1_).getName()); |
| assertEquals(resource1, container.eResource()); |
| assertEquals(resource2, element0_.eResource()); |
| assertEquals(resource2, element1_.eResource()); |
| |
| assertContent(resource1, container); |
| assertContent(resource2, element0_); |
| assertContent(resource2, element1_); |
| } |
| |
| public void testMultipleTransactions3() throws CommitException |
| { |
| CDOTransaction transaction1 = session.openTransaction(); |
| String resource1path = getResourcePath("/resources/3/res" + uniqueCounter); |
| CDOResource resource1 = transaction1.createResource(resource1path); |
| transaction1.commit(); |
| |
| CDOTransaction transaction2 = session.openTransaction(); |
| String resource2path = getResourcePath("/resources/4/res" + uniqueCounter++); |
| CDOResource resource2 = transaction2.createResource(resource2path); |
| transaction2.commit(); |
| |
| MultiContainedElement element0 = factory.createMultiContainedElement(); |
| element0.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element1 = factory.createMultiContainedElement(); |
| element1.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element2 = factory.createMultiContainedElement(); |
| element2.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element3 = factory.createMultiContainedElement(); |
| element3.setName("MultipleTransactions-Element-0"); |
| |
| resource1.getContents().add(element0); |
| resource1.getContents().add(element1); |
| resource1.getContents().add(element2); |
| resource1.getContents().add(element3); |
| |
| transaction1.commit(); |
| |
| RefMultiContained container = factory.createRefMultiContained(); |
| resource2.getContents().add(container); |
| |
| transaction2.commit(); |
| |
| CDOTransaction transaction3 = session.openTransaction(); |
| EList<EObject> elements = transaction3.getResource(resource1path).getContents(); |
| EList<EObject> containers = transaction3.getResource(resource2path).getContents(); |
| List<EObject> elementToRemove = new ArrayList<EObject>(); |
| for (EObject o : elements) |
| { |
| elementToRemove.add(o); |
| } |
| |
| RefMultiContained container_work = (RefMultiContained)containers.get(0); |
| for (EObject o : elementToRemove) |
| { |
| MultiContainedElement element_work = (MultiContainedElement)o; |
| container_work.getElements().add(element_work); |
| transaction3.commit(); |
| } |
| } |
| |
| public void testMultipleTransactions2() throws CommitException |
| { |
| CDOTransaction transaction1 = session.openTransaction(); |
| String resource1path = getResourcePath("/resources/3/res" + uniqueCounter); |
| CDOResource resource1 = transaction1.createResource(resource1path); |
| transaction1.commit(); |
| |
| CDOTransaction transaction2 = session.openTransaction(); |
| String resource2path = getResourcePath("/resources/4/res" + uniqueCounter++); |
| CDOResource resource2 = transaction2.createResource(resource2path); |
| transaction2.commit(); |
| |
| MultiContainedElement element0 = factory.createMultiContainedElement(); |
| element0.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element1 = factory.createMultiContainedElement(); |
| element1.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element2 = factory.createMultiContainedElement(); |
| element2.setName("MultipleTransactions-Element-0"); |
| |
| MultiContainedElement element3 = factory.createMultiContainedElement(); |
| element3.setName("MultipleTransactions-Element-0"); |
| |
| resource1.getContents().add(element0); |
| resource1.getContents().add(element1); |
| resource1.getContents().add(element2); |
| resource1.getContents().add(element3); |
| |
| transaction1.commit(); |
| |
| RefMultiContained container = factory.createRefMultiContained(); |
| resource2.getContents().add(container); |
| |
| transaction2.commit(); |
| CDOResource resource1FromTx2 = transaction2.getResource(resource1path); |
| EList<EObject> elements = resource1FromTx2.getContents(); |
| List<EObject> elementToRemove = new ArrayList<EObject>(); |
| for (EObject o : elements) |
| { |
| elementToRemove.add(o); |
| } |
| |
| for (EObject o : elementToRemove) |
| { |
| MultiContainedElement element_work = (MultiContainedElement)o; |
| assertEquals(resource1FromTx2, CDOUtil.getCDOObject(element_work).cdoDirectResource()); |
| assertEquals(resource1FromTx2, element_work.eResource()); |
| |
| container.getElements().add(element_work); |
| |
| assertEquals(null, CDOUtil.getCDOObject(element_work).cdoDirectResource()); |
| assertEquals(resource2, element_work.eResource()); |
| transaction2.commit(); |
| } |
| } |
| |
| public void testMigrateContainmentSingle() |
| { |
| SingleContainedElement element = factory.createSingleContainedElement(); |
| element.setName("MigrateContainmentSingle-Element-0"); |
| |
| RefSingleContained container1 = factory.createRefSingleContained(); |
| container1.setElement(element); |
| resource1.getContents().add(container1); |
| |
| RefSingleContained container2 = factory.createRefSingleContained(); |
| resource2.getContents().add(container2); |
| commit(); |
| |
| container2.setElement(element); |
| commit(); |
| |
| assertEquals(container2, element.getParent()); |
| assertEquals(container2, element.eContainer()); |
| assertEquals(null, CDOUtil.getCDOObject(element).cdoDirectResource()); |
| |
| assertEquals(null, container1.getElement()); |
| assertEquals(resource1, CDOUtil.getCDOObject(container1).cdoDirectResource()); |
| |
| assertEquals(element, container2.getElement()); |
| assertEquals(resource2, CDOUtil.getCDOObject(container2).cdoDirectResource()); |
| } |
| |
| public void testMigrateContainmentMulti() |
| { |
| MultiContainedElement elementA = factory.createMultiContainedElement(); |
| elementA.setName("MigrateContainmentMulti-Element-A"); |
| |
| MultiContainedElement elementB = factory.createMultiContainedElement(); |
| elementB.setName("MigrateContainmentMulti-Element-B"); |
| |
| RefMultiContained container1 = factory.createRefMultiContained(); |
| container1.getElements().add(elementA); |
| container1.getElements().add(elementB); |
| |
| resource1.getContents().add(container1); |
| |
| RefMultiContained container2 = factory.createRefMultiContained(); |
| resource2.getContents().add(container2); |
| commit(); |
| |
| container2.getElements().add(container1.getElements().get(0)); |
| commit(); |
| |
| assertEquals(container2, elementA.getParent()); |
| assertEquals(container2, elementA.eContainer()); |
| assertEquals(null, CDOUtil.getCDOObject(elementA).cdoDirectResource()); |
| assertEquals(resource2, elementA.eResource()); |
| |
| assertEquals(container1, elementB.getParent()); |
| assertEquals(container1, elementB.eContainer()); |
| assertEquals(null, CDOUtil.getCDOObject(elementB).cdoDirectResource()); |
| assertEquals(resource1, elementB.eResource()); |
| |
| assertEquals(resource1, CDOUtil.getCDOObject(container1).cdoDirectResource()); |
| assertEquals(1, container1.getElements().size()); |
| assertEquals(elementB, container1.getElements().get(0)); |
| |
| assertEquals(resource2, CDOUtil.getCDOObject(container2).cdoDirectResource()); |
| assertEquals(1, container2.getElements().size()); |
| assertEquals(elementA, container2.getElements().get(0)); |
| } |
| } |