| /* |
| * 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: |
| * Simon McDuff - initial API and implementation |
| * Eike Stepper - maintenance |
| */ |
| package org.eclipse.emf.cdo.tests; |
| |
| import org.eclipse.emf.cdo.CDOObject; |
| import org.eclipse.emf.cdo.common.util.CDOFetchRule; |
| import org.eclipse.emf.cdo.eresource.CDOResource; |
| import org.eclipse.emf.cdo.session.CDOSession; |
| import org.eclipse.emf.cdo.tests.config.impl.SessionConfig; |
| import org.eclipse.emf.cdo.tests.model1.Company; |
| import org.eclipse.emf.cdo.tests.model1.PurchaseOrder; |
| import org.eclipse.emf.cdo.tests.model1.SalesOrder; |
| import org.eclipse.emf.cdo.tests.model1.Supplier; |
| import org.eclipse.emf.cdo.transaction.CDOTransaction; |
| import org.eclipse.emf.cdo.util.CDOUtil; |
| |
| import org.eclipse.emf.internal.cdo.analyzer.CDOFeatureAnalyzerModelBased; |
| |
| import org.eclipse.emf.ecore.EClass; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| /** |
| * See bug 202063 |
| * |
| * @author Simon McDuff |
| */ |
| public class _FetchRuleAnalyzerTest_DISABLED_ extends AbstractCDOTest |
| { |
| public void testLoadObject() throws Exception |
| { |
| ArrayList<CDOObject> listOfCompany = new ArrayList<CDOObject>(); |
| |
| { |
| // disableConsole(); |
| msg("Opening session"); |
| CDOSession session = openSession(); |
| |
| msg("Opening transaction"); |
| CDOTransaction transaction = session.openTransaction(); |
| |
| msg("Creating resource"); |
| CDOResource resource = transaction.createResource(getResourcePath("/test2")); |
| |
| msg("Creating supplier"); |
| for (int i = 0; i < 10; i++) |
| { |
| Company company = getModel1Factory().createCompany(); |
| company.setCity("CITY" + String.valueOf(i)); |
| |
| for (int j = 0; j < 10; j++) |
| { |
| PurchaseOrder purchaseOrder = getModel1Factory().createPurchaseOrder(); |
| company.getPurchaseOrders().add(purchaseOrder); |
| |
| Supplier supplier = getModel1Factory().createSupplier(); |
| |
| // Should it detect supplier to make it persistent... |
| |
| resource.getContents().add(supplier); |
| purchaseOrder.setSupplier(supplier); |
| |
| SalesOrder salesOrder = getModel1Factory().createSalesOrder(); |
| company.getSalesOrders().add(salesOrder); |
| } |
| |
| resource.getContents().add(company); |
| listOfCompany.add(CDOUtil.getCDOObject(company)); |
| } |
| |
| transaction.commit(); |
| // session.close(); |
| enableConsole(); |
| } |
| |
| msg("Opening session"); |
| getTestProperties().put(SessionConfig.PROP_TEST_FETCH_RULE_MANAGER, CDOUtil.createThreadLocalFetchRuleManager()); |
| CDOSession session = openSession(); |
| |
| msg("Opening transaction"); |
| CDOTransaction transaction = session.openTransaction(); |
| transaction.options().setFeatureAnalyzer(CDOUtil.createModelBasedFeatureAnalyzer()); |
| transaction.options().setRevisionPrefetchingPolicy(CDOUtil.createRevisionPrefetchingPolicy(10)); |
| |
| msg("Getting resource"); |
| for (CDOObject companyObject : listOfCompany) |
| { |
| Company company = (Company)CDOUtil.getEObject(transaction.getObject(companyObject.cdoID(), true)); |
| for (PurchaseOrder purchaseOrder : company.getPurchaseOrders()) |
| { |
| purchaseOrder.getSupplier(); |
| } |
| } |
| |
| // Number of fetch should be 20. |
| assertEquals(20, new CDOFeatureAnalyzerModelBased().getFetchCount()); |
| |
| List<CDOFetchRule> fetchRules = new CDOFeatureAnalyzerModelBased().getFetchRules(null); |
| |
| assertEquals(2, fetchRules.size()); |
| |
| CDOFetchRule fetchRule1 = fetchRules.get(0); |
| EClass eClass = fetchRule1.getEClass(); |
| assertEquals(getModel1Package().getCompany(), eClass); |
| assertEquals(1, fetchRule1.getFeatures().size()); |
| assertEquals(getModel1Package().getCompany_PurchaseOrders().getName(), fetchRule1.getFeatures().get(0).getName()); |
| |
| CDOFetchRule fetchRule2 = fetchRules.get(1); |
| EClass ePurchaseOrder = fetchRule2.getEClass(); |
| assertEquals(getModel1Package().getPurchaseOrder(), ePurchaseOrder); |
| assertEquals(1, fetchRule2.getFeatures().size()); |
| assertEquals(getModel1Package().getPurchaseOrder_Supplier().getName(), fetchRule2.getFeatures().get(0).getName()); |
| |
| transaction.close(); |
| // TODO session.close(); |
| } |
| } |