blob: b25d9119493a24dee4313cec1558546e6a7ccddc [file] [log] [blame]
/*
* Copyright (c) 2012 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:
* Torsten Scholz - initial API and implementation
*/
package org.eclipse.emf.cdo.tests.bugzilla;
import org.eclipse.emf.cdo.CDOObject;
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.Model1Factory;
import org.eclipse.emf.cdo.tests.model1.Order;
import org.eclipse.emf.cdo.tests.model1.OrderDetail;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
/**
* @author Torsten Scholz <scholz@kdo.de>
*/
public class Bugzilla_396181_Test extends AbstractCDOTest
{
public void testCreatePersist() throws Exception
{
// Create an OrderDetail and add it to the resource
final CDOSession session1 = openSession();
final CDOTransaction transaction1 = session1.openTransaction();
CDOResource resource1 = transaction1.getOrCreateResource(getResourcePath("/res1"));
OrderDetail orderDetail = Model1Factory.eINSTANCE.createOrderDetail();
resource1.getContents().add(orderDetail);
transaction1.commit();
// Create a SalesOrder an add it the resource in another transaction, commit the transaction
final CDOSession session2 = openSession();
final CDOTransaction transaction2 = session2.openTransaction();
CDOResource resource2 = transaction2.getOrCreateResource(getResourcePath("/res1"));
Order order = Model1Factory.eINSTANCE.createSalesOrder();
resource2.getContents().add(order);
commitAndSync(transaction2, transaction1);
// Query the SalesOrder in the first opened transaction, add it to the OrderDetail, commit the first transaction
Order queriedOrder = (Order)transaction1.getObject(((CDOObject)order).cdoID());
orderDetail.setOrder(queriedOrder);
transaction1.commit();
}
}