Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 202064 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/emf/cdo/internal/server/protocol/LoadRevisionIndication.java (-2 / +3 lines)
Lines 11-16 Link Here
11
package org.eclipse.emf.cdo.internal.server.protocol;
11
package org.eclipse.emf.cdo.internal.server.protocol;
12
12
13
import org.eclipse.emf.cdo.internal.protocol.CDOIDImpl;
13
import org.eclipse.emf.cdo.internal.protocol.CDOIDImpl;
14
import org.eclipse.emf.cdo.internal.protocol.CDOIDNull;
14
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
15
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
15
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl.MoveableList;
16
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl.MoveableList;
16
import org.eclipse.emf.cdo.internal.server.RevisionManager;
17
import org.eclipse.emf.cdo.internal.server.RevisionManager;
Lines 47-55 Link Here
47
48
48
  protected Map<CDOClass, CDOFetchRule> fetchRules = new HashMap<CDOClass, CDOFetchRule>();
49
  protected Map<CDOClass, CDOFetchRule> fetchRules = new HashMap<CDOClass, CDOFetchRule>();
49
50
50
  protected CDOID contextID;
51
  protected CDOID contextID = CDOIDNull.NULL;
51
52
52
  protected int loadRevisionCollectionChunkSize;
53
  protected int loadRevisionCollectionChunkSize = 1;
53
54
54
  public LoadRevisionIndication()
55
  public LoadRevisionIndication()
55
  {
56
  {
(-)src/org/eclipse/emf/cdo/tests/FetchRuleAnalyzerTest.java (-15 / +56 lines)
Lines 10-31 Link Here
10
 **************************************************************************/
10
 **************************************************************************/
11
package org.eclipse.emf.cdo.tests;
11
package org.eclipse.emf.cdo.tests;
12
12
13
import java.util.ArrayList;
14
import java.util.List;
15
16
import org.eclipse.emf.cdo.CDOObject;
13
import org.eclipse.emf.cdo.CDOSession;
17
import org.eclipse.emf.cdo.CDOSession;
14
import org.eclipse.emf.cdo.CDOTransaction;
18
import org.eclipse.emf.cdo.CDOTransaction;
15
import org.eclipse.emf.cdo.eresource.CDOResource;
19
import org.eclipse.emf.cdo.eresource.CDOResource;
20
import org.eclipse.emf.cdo.internal.protocol.model.CDOClassImpl;
21
import org.eclipse.emf.cdo.protocol.CDOID;
22
import org.eclipse.emf.cdo.protocol.analyzer.CDOFetchRule;
23
import org.eclipse.emf.cdo.protocol.model.CDOClass;
16
import org.eclipse.emf.cdo.tests.model1.Company;
24
import org.eclipse.emf.cdo.tests.model1.Company;
17
import org.eclipse.emf.cdo.tests.model1.Model1Factory;
25
import org.eclipse.emf.cdo.tests.model1.Model1Factory;
26
import org.eclipse.emf.cdo.tests.model1.Model1Package;
18
import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
27
import org.eclipse.emf.cdo.tests.model1.PurchaseOrder;
19
import org.eclipse.emf.cdo.tests.model1.SalesOrder;
28
import org.eclipse.emf.cdo.tests.model1.SalesOrder;
20
import org.eclipse.emf.cdo.tests.model1.Supplier;
29
import org.eclipse.emf.cdo.tests.model1.Supplier;
30
import org.eclipse.emf.cdo.util.EMFUtil;
21
31
22
import org.eclipse.emf.common.util.EList;
32
import org.eclipse.emf.common.util.EList;
33
import org.eclipse.emf.ecore.EClass;
23
import org.eclipse.emf.ecore.EObject;
34
import org.eclipse.emf.ecore.EObject;
24
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
35
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
36
import org.eclipse.emf.internal.cdo.CDOObjectImpl;
25
import org.eclipse.emf.internal.cdo.CDOSessionImpl;
37
import org.eclipse.emf.internal.cdo.CDOSessionImpl;
26
import org.eclipse.emf.internal.cdo.CDOTransactionImpl;
38
import org.eclipse.emf.internal.cdo.CDOTransactionImpl;
27
import org.eclipse.emf.internal.cdo.analyzer.CDOFeatureAnalyzerModelBased;
39
import org.eclipse.emf.internal.cdo.analyzer.CDOFeatureAnalyzerModelBased;
28
import org.eclipse.emf.internal.cdo.analyzer.CDOFetchRuleManagerThreadLocal;
40
import org.eclipse.emf.internal.cdo.analyzer.CDOFetchRuleManagerThreadLocal;
41
import org.eclipse.emf.internal.cdo.util.FSMUtil;
42
import org.eclipse.emf.internal.cdo.util.ModelUtil;
29
43
30
/**
44
/**
31
 * @author Eike Stepper
45
 * @author Eike Stepper
Lines 34-39 Link Here
34
{
48
{
35
  public void testLoadObject() throws Exception
49
  public void testLoadObject() throws Exception
36
  {
50
  {
51
	ArrayList<CDOObject> listOfCompany = new ArrayList<CDOObject>();
52
	
37
    {
53
    {
38
      // disableConsole();
54
      // disableConsole();
39
      msg("Opening session");
55
      msg("Opening session");
Lines 44-50 Link Here
44
60
45
      msg("Creating resource");
61
      msg("Creating resource");
46
      CDOResource resource = transaction.createResource("/test2");
62
      CDOResource resource = transaction.createResource("/test2");
47
63
      
48
      msg("Creating supplier");
64
      msg("Creating supplier");
49
      for (int i = 0; i < 10; i++)
65
      for (int i = 0; i < 10; i++)
50
      {
66
      {
Lines 59-65 Link Here
59
          Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
75
          Supplier supplier = Model1Factory.eINSTANCE.createSupplier();
60
76
61
          // Should it detect supplier to make it persistent...
77
          // Should it detect supplier to make it persistent...
62
          // I don't want to do resource.getContents().add(supplier)
78
          
79
          resource.getContents().add(supplier);
63
          purchaseOrder.setSupplier(supplier);
80
          purchaseOrder.setSupplier(supplier);
64
81
65
          SalesOrder salesOrder = Model1Factory.eINSTANCE.createSalesOrder();
82
          SalesOrder salesOrder = Model1Factory.eINSTANCE.createSalesOrder();
Lines 67-76 Link Here
67
        }
84
        }
68
85
69
        resource.getContents().add(company);
86
        resource.getContents().add(company);
87
        listOfCompany.add(company);
70
      }
88
      }
71
89
72
      transaction.commit();
90
      transaction.commit();
73
      // XXX session.close();
91
      //session.close();
74
      enableConsole();
92
      enableConsole();
75
    }
93
    }
76
94
Lines 85-105 Link Here
85
    CDOFeatureAnalyzerModelBased featureanalyzerModelBased = new CDOFeatureAnalyzerModelBased();
103
    CDOFeatureAnalyzerModelBased featureanalyzerModelBased = new CDOFeatureAnalyzerModelBased();
86
    transaction.setFeatureAnalyzer(featureanalyzerModelBased);
104
    transaction.setFeatureAnalyzer(featureanalyzerModelBased);
87
    transaction.setLoadRevisionCollectionChunkSize(10);
105
    transaction.setLoadRevisionCollectionChunkSize(10);
88
106
    
89
    msg("Getting resource");
107
    msg("Getting resource");
90
    CDOResource resource = transaction.getResource("/test2");
108
    
91
109
92
    msg("Getting contents");
110
    for (CDOObject companyObject : listOfCompany)
93
    EList<EObject> contents = resource.getContents();
94
    for (EObject eObject : contents)
95
    {
111
    {
96
      Company company = (Company)eObject;
112
       Company company = (Company)transaction.getObject(companyObject.cdoID(), true);
97
      for (PurchaseOrder purchaseOrder : company.getPurchaseOrders())
113
       for (PurchaseOrder purchaseOrder : company.getPurchaseOrders())
98
      {
114
       {
99
        purchaseOrder.getSupplier();
115
    	   purchaseOrder.getSupplier();
100
      }
116
       }
117
      
101
    }
118
    }
102
119
    
103
    assertEquals(featureanalyzerModelBased.getFetchCount(), 12);
120
    
121
    // Number of fetch should be 20.
122
    assertEquals(20, featureanalyzerModelBased.getFetchCount());
123
    
124
    List<CDOFetchRule> fetchRules = featureanalyzerModelBased.getFetchRules(null);
125
    
126
    assertEquals(2, fetchRules.size());
127
    
128
    CDOFetchRule fetchRule1 = fetchRules.get(0);
129
    EClass eClass = ModelUtil.getEClass((CDOClassImpl)fetchRule1.getCDOClass(), session.getPackageRegistry());
130
    assertEquals(Model1Package.eINSTANCE.getCompany(), eClass);
131
    assertEquals(1, fetchRule1.getFeatures().size());
132
    assertEquals(Model1Package.eINSTANCE.getCompany_PurchaseOrders().getName(), fetchRule1.getFeatures().get(0).getName());
133
134
    
135
    CDOFetchRule fetchRule2 = fetchRules.get(1);
136
    EClass ePurchaseOrder = ModelUtil.getEClass((CDOClassImpl)fetchRule2.getCDOClass(), session.getPackageRegistry());
137
    assertEquals(Model1Package.eINSTANCE.getPurchaseOrder(), ePurchaseOrder);
138
    assertEquals(1, fetchRule2.getFeatures().size());
139
    assertEquals(Model1Package.eINSTANCE.getPurchaseOrder_Supplier().getName(), fetchRule2.getFeatures().get(0).getName());
140
141
    
142
    
143
    transaction.close();
144
    //session.close();
104
  }
145
  }
105
}
146
}
(-)src/org/eclipse/emf/internal/cdo/analyzer/CDOFeatureAnalyzerModelBased.java (-1 / +2 lines)
Lines 11-16 Link Here
11
 **************************************************************************/
11
 **************************************************************************/
12
package org.eclipse.emf.internal.cdo.analyzer;
12
package org.eclipse.emf.internal.cdo.analyzer;
13
13
14
import org.eclipse.emf.cdo.internal.protocol.CDOIDNull;
14
import org.eclipse.emf.cdo.protocol.CDOID;
15
import org.eclipse.emf.cdo.protocol.CDOID;
15
import org.eclipse.emf.cdo.protocol.analyzer.CDOFetchRule;
16
import org.eclipse.emf.cdo.protocol.analyzer.CDOFetchRule;
16
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
17
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
Lines 48-54 Link Here
48
49
49
  public CDOID getContext()
50
  public CDOID getContext()
50
  {
51
  {
51
    return null;
52
    return CDOIDNull.NULL;
52
  }
53
  }
53
54
54
  public List<CDOFetchRule> getFetchRules(Collection<CDOID> ids)
55
  public List<CDOFetchRule> getFetchRules(Collection<CDOID> ids)
(-)src/org/eclipse/emf/internal/cdo/analyzer/CDOClusterOfFetchRule.java (-2 / +1 lines)
Lines 52-59 Link Here
52
  @Override
52
  @Override
53
  public int hashCode()
53
  public int hashCode()
54
  {
54
  {
55
    // TODO Missing "rootClass.hashCode() ^ " or intention?
55
    return rootFeature.hashCode() ^ rootClass.hashCode();
56
    return rootFeature.hashCode();
57
  }
56
  }
58
57
59
  @Override
58
  @Override
(-)src/org/eclipse/emf/internal/cdo/analyzer/CDOAbstractFeatureRuleAnalyzer.java (-3 lines)
Lines 39-47 Link Here
39
39
40
  protected int loadRevisionCollectionChunkSize;
40
  protected int loadRevisionCollectionChunkSize;
41
41
42
  /**
43
   * TODO Can didFetch be derived from fetchCount?
44
   */
45
  private boolean didFetch;
42
  private boolean didFetch;
46
43
47
  private int fetchCount = 0;
44
  private int fetchCount = 0;
(-)src/org/eclipse/emf/internal/cdo/analyzer/CDOFetchFeatureInfo.java (-2 / +1 lines)
Lines 104-111 Link Here
104
  @Override
104
  @Override
105
  public int hashCode()
105
  public int hashCode()
106
  {
106
  {
107
    // TODO Missing "cdoClass.hashCode() ^ " or intention?
107
    return cdoClass.hashCode()  ^ cdoFeature.hashCode();
108
    return cdoFeature.hashCode();
109
  }
108
  }
110
109
111
  @Override
110
  @Override

Return to bug 202064