/* * 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(); } }