blob: 357eddc1a58b1ff38148efdee42be954446441e5 [file] [log] [blame]
/*
* Copyright (c) 2012, 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:
* Martin Taal - initial API and implementation
*/
package org.eclipse.emf.cdo.tests.hibernate;
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.OrderDetail;
import org.eclipse.emf.cdo.tests.model1.SalesOrder;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import java.util.Collections;
/**
* @author Michael Tkacz
*/
public class HibernateBugzilla_333473_Test extends AbstractCDOTest
{
public void testRemovalFirstAttempt() throws Exception
{
testRemoval(false);
}
public void testRemovalSecondAttempt() throws Exception
{
testRemoval(true);
}
private void testRemoval(boolean removeOrderDetailFromResourceBeforeRemoval) throws Exception
{
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource orderDetailResource = transaction.getOrCreateResource(getResourcePath("/orderDetail")); //$NON-NLS-1$
orderDetailResource.getContents().clear();
final OrderDetail orderDetail = getModel1Factory().createOrderDetail();
orderDetail.setPrice(1.0f);
orderDetailResource.getContents().add(orderDetail);
CDOResource orderResource = transaction.getOrCreateResource(getResourcePath("/order")); //$NON-NLS-1$
orderResource.getContents().clear();
SalesOrder order = getModel1Factory().createSalesOrder();
order.getOrderDetails().add(orderDetail);
orderResource.getContents().add(order);
transaction.commit();
transaction.close();
session.close();
// so far so good
session = openSession();
transaction = session.openTransaction();
orderResource = transaction.getResource(getResourcePath("/order")); //$NON-NLS-1$
orderDetailResource = transaction.getResource(getResourcePath("/orderDetail")); //$NON-NLS-1$
order = (SalesOrder)orderResource.getContents().get(0);
order.getOrderDetails().clear();
if (removeOrderDetailFromResourceBeforeRemoval)
{
orderDetailResource.getContents().clear();
}
orderDetailResource.delete(Collections.EMPTY_MAP);
transaction.commit();
transaction.close();
session.close();
}
}