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 267050 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/emf/cdo/tests/AllTestsAllConfigs.java (+2 lines)
Lines 42-47 Link Here
42
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
42
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_261218_Test;
43
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_265114_Test;
43
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_265114_Test;
44
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_266857_Test;
44
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_266857_Test;
45
import org.eclipse.emf.cdo.tests.bugzilla.Bugzilla_267050_Test;
45
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
46
import org.eclipse.emf.cdo.tests.config.impl.ConfigTest;
46
import org.eclipse.emf.cdo.tests.config.impl.ConfigTestSuite;
47
import org.eclipse.emf.cdo.tests.config.impl.ConfigTestSuite;
47
48
Lines 130-135 Link Here
130
    testClasses.add(Bugzilla_261218_Test.class);
131
    testClasses.add(Bugzilla_261218_Test.class);
131
    testClasses.add(Bugzilla_265114_Test.class);
132
    testClasses.add(Bugzilla_265114_Test.class);
132
    testClasses.add(Bugzilla_266857_Test.class);
133
    testClasses.add(Bugzilla_266857_Test.class);
134
    testClasses.add(Bugzilla_267050_Test.class);
133
135
134
    // TODO testClasses.add(NonCDOResourceTest.class);
136
    // TODO testClasses.add(NonCDOResourceTest.class);
135
    // TODO testClasses.add(GeneratedEcoreTest.class);
137
    // TODO testClasses.add(GeneratedEcoreTest.class);
(-)src/org/eclipse/emf/cdo/tests/bugzilla/Bugzilla_267050_Test.java (+76 lines)
Added Link Here
1
/**
2
 * Copyright (c) 2004 - 2009 Eike Stepper (Berlin, Germany) and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 *    Simon McDuff - initial API and implementation   
10
 */
11
package org.eclipse.emf.cdo.tests.bugzilla;
12
13
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
14
import org.eclipse.emf.cdo.eresource.CDOResource;
15
import org.eclipse.emf.cdo.session.CDOSession;
16
import org.eclipse.emf.cdo.session.CDOSessionInvalidationEvent;
17
import org.eclipse.emf.cdo.tests.AbstractCDOTest;
18
import org.eclipse.emf.cdo.tests.model1.Company;
19
import org.eclipse.emf.cdo.transaction.CDOTransaction;
20
21
import org.eclipse.net4j.util.event.IEvent;
22
import org.eclipse.net4j.util.event.IListener;
23
24
import java.util.Collection;
25
26
/**
27
 * Add new packages infos in the Notifications process at the client side
28
 * 
29
 * @see https://bugs.eclipse.org/267050
30
 * @author Simon McDuff
31
 */
32
public class Bugzilla_267050_Test extends AbstractCDOTest
33
{
34
  @SuppressWarnings("unchecked")
35
  public void testBugzilla_267050() throws InterruptedException
36
  {
37
    final Collection<CDOPackageUnit> newPackagesUnits[] = new Collection[1];
38
    CDOSession session = openSession();
39
    CDOTransaction transaction = session.openTransaction();
40
41
    CDOSession session2 = openSession();
42
    session2.addListener(new IListener()
43
    {
44
      public void notifyEvent(IEvent event)
45
      {
46
        if (event instanceof CDOSessionInvalidationEvent)
47
        {
48
          CDOSessionInvalidationEvent e = (CDOSessionInvalidationEvent)event;
49
          newPackagesUnits[0] = e.getNewPackageUnits();
50
        }
51
      }
52
    });
53
54
    session.getPackageRegistry().putEPackage(getModel1Package());
55
56
    CDOResource res = transaction.createResource("/res");
57
    Company specialPurchaseOrder = getModel1Factory().createCompany();
58
    res.getContents().add(specialPurchaseOrder);
59
    transaction.commit();
60
61
    boolean timedOut = new PollingTimeOuter(10, 100)
62
    {
63
      @Override
64
      protected boolean successful()
65
      {
66
        return newPackagesUnits[0] != null;
67
      }
68
    }.timedOut();
69
70
    assertEquals(false, timedOut);
71
72
    assertEquals(1, newPackagesUnits[0].size());
73
    assertEquals(getModel1Package().getNsURI(), newPackagesUnits[0].iterator().next().getTopLevelPackageInfo()
74
        .getPackageURI());
75
  }
76
}
(-)src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java (-14 / +26 lines)
Lines 385-408 Link Here
385
  /**
385
  /**
386
   * @since 2.0
386
   * @since 2.0
387
   */
387
   */
388
  public void handleSyncResponse(long timestamp, Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects)
388
  public void handleSyncResponse(long timestamp, Collection<CDOPackageUnit> newPackageUnits,
389
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects)
389
  {
390
  {
390
    handleCommitNotification(timestamp, dirtyOIDs, detachedObjects, null, null, true, false);
391
    handleCommitNotification(timestamp, newPackageUnits, dirtyOIDs, detachedObjects, null, null, true, false);
391
  }
392
  }
392
393
393
  /**
394
  /**
394
   * @since 2.0
395
   * @since 2.0
395
   */
396
   */
396
  public void handleCommitNotification(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
397
  public void handleCommitNotification(final long timeStamp, final Collection<CDOPackageUnit> newPackageUnits,
397
      final Collection<CDOID> detachedObjects, final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView)
398
      Set<CDOIDAndVersion> dirtyOIDs, final Collection<CDOID> detachedObjects,
399
      final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView)
398
  {
400
  {
399
    handleCommitNotification(timeStamp, dirtyOIDs, detachedObjects, deltas, excludedView, options()
401
    handleCommitNotification(timeStamp, newPackageUnits, dirtyOIDs, detachedObjects, deltas, excludedView, options()
400
        .isPassiveUpdateEnabled(), true);
402
        .isPassiveUpdateEnabled(), true);
401
  }
403
  }
402
404
403
  private void handleCommitNotification(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
405
  private void handleCommitNotification(final long timeStamp, final Collection<CDOPackageUnit> newPackageUnits,
404
      final Collection<CDOID> detachedObjects, final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView,
406
      Set<CDOIDAndVersion> dirtyOIDs, final Collection<CDOID> detachedObjects,
405
      final boolean passiveUpdate, boolean async)
407
      final Collection<CDORevisionDelta> deltas, InternalCDOView excludedView, final boolean passiveUpdate,
408
      boolean async)
406
  {
409
  {
407
    if (passiveUpdate)
410
    if (passiveUpdate)
408
    {
411
    {
Lines 459-465 Link Here
459
      }
462
      }
460
    }
463
    }
461
464
462
    fireInvalidationEvent(timeStamp, dirtyOIDs, detachedObjects, excludedView);
465
    fireInvalidationEvent(timeStamp, newPackageUnits, dirtyOIDs, detachedObjects, excludedView);
463
  }
466
  }
464
467
465
  private void updateRevisionForRemoteChanges(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
468
  private void updateRevisionForRemoteChanges(final long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
Lines 514-525 Link Here
514
  }
517
  }
515
518
516
  /**
519
  /**
520
   * @param packageUnits
517
   * @since 2.0
521
   * @since 2.0
518
   */
522
   */
519
  public void fireInvalidationEvent(long timeStamp, Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects,
523
  public void fireInvalidationEvent(long timeStamp, Collection<CDOPackageUnit> packageUnits,
520
      InternalCDOView excludedView)
524
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects, InternalCDOView excludedView)
521
  {
525
  {
522
    fireEvent(new InvalidationEvent(excludedView, timeStamp, dirtyOIDs, detachedObjects));
526
    fireEvent(new InvalidationEvent(excludedView, timeStamp, packageUnits, dirtyOIDs, detachedObjects));
523
  }
527
  }
524
528
525
  @Override
529
  @Override
Lines 1090-1101 Link Here
1090
1094
1091
    private Collection<CDOID> detachedObjects;
1095
    private Collection<CDOID> detachedObjects;
1092
1096
1093
    public InvalidationEvent(InternalCDOView view, long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
1097
    private final Collection<CDOPackageUnit> newPackageUnits;
1094
        Collection<CDOID> detachedObjects)
1098
1099
    public InvalidationEvent(InternalCDOView view, long timeStamp, Collection<CDOPackageUnit> packageUnits,
1100
        Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects)
1095
    {
1101
    {
1096
      super(CDOSessionImpl.this);
1102
      super(CDOSessionImpl.this);
1097
      this.view = view;
1103
      this.view = view;
1098
      this.timeStamp = timeStamp;
1104
      this.timeStamp = timeStamp;
1105
      newPackageUnits = packageUnits;
1099
      this.dirtyOIDs = dirtyOIDs;
1106
      this.dirtyOIDs = dirtyOIDs;
1100
      this.detachedObjects = detachedObjects;
1107
      this.detachedObjects = detachedObjects;
1101
    }
1108
    }
Lines 1125-1130 Link Here
1125
      return detachedObjects;
1132
      return detachedObjects;
1126
    }
1133
    }
1127
1134
1135
    public Collection<CDOPackageUnit> getNewPackageUnits()
1136
    {
1137
      return newPackageUnits;
1138
    }
1139
1128
    @Override
1140
    @Override
1129
    public String toString()
1141
    public String toString()
1130
    {
1142
    {
(-)src/org/eclipse/emf/internal/cdo/net4j/protocol/SyncRevisionsRequest.java (-2 / +3 lines)
Lines 16-21 Link Here
16
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
16
import org.eclipse.emf.cdo.common.id.CDOIDUtil;
17
import org.eclipse.emf.cdo.common.io.CDODataInput;
17
import org.eclipse.emf.cdo.common.io.CDODataInput;
18
import org.eclipse.emf.cdo.common.io.CDODataOutput;
18
import org.eclipse.emf.cdo.common.io.CDODataOutput;
19
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
19
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
20
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
20
import org.eclipse.emf.cdo.common.revision.CDORevision;
21
import org.eclipse.emf.cdo.common.revision.CDORevision;
21
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
22
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
Lines 113-119 Link Here
113
      Collection<CDOID> detachedObjects = getMap(mapofContext, revised).getDetachedObjects();
114
      Collection<CDOID> detachedObjects = getMap(mapofContext, revised).getDetachedObjects();
114
      detachedObjects.add(id);
115
      detachedObjects.add(id);
115
    }
116
    }
116
117
    Collection<CDOPackageUnit> emptyNewPackageUnits = Collections.emptyList();
117
    for (CDOTimeStampContext timestampContext : mapofContext.values())
118
    for (CDOTimeStampContext timestampContext : mapofContext.values())
118
    {
119
    {
119
      Set<CDOIDAndVersion> dirtyObjects = timestampContext.getDirtyObjects();
120
      Set<CDOIDAndVersion> dirtyObjects = timestampContext.getDirtyObjects();
Lines 125-131 Link Here
125
      ((CDOTimeStampContextImpl)timestampContext).setDirtyObjects(dirtyObjects);
126
      ((CDOTimeStampContextImpl)timestampContext).setDirtyObjects(dirtyObjects);
126
      ((CDOTimeStampContextImpl)timestampContext).setDetachedObjects(detachedObjects);
127
      ((CDOTimeStampContextImpl)timestampContext).setDetachedObjects(detachedObjects);
127
128
128
      getSession().handleSyncResponse(timestampContext.getTimeStamp(), dirtyObjects, detachedObjects);
129
      getSession().handleSyncResponse(timestampContext.getTimeStamp(), emptyNewPackageUnits, dirtyObjects, detachedObjects);
129
    }
130
    }
130
131
131
    return Collections.unmodifiableCollection(mapofContext.values());
132
    return Collections.unmodifiableCollection(mapofContext.values());
(-)src/org/eclipse/emf/internal/cdo/net4j/protocol/CommitNotificationIndication.java (-1 / +2 lines)
Lines 28-33 Link Here
28
28
29
import java.io.IOException;
29
import java.io.IOException;
30
import java.util.ArrayList;
30
import java.util.ArrayList;
31
import java.util.Arrays;
31
import java.util.HashSet;
32
import java.util.HashSet;
32
import java.util.List;
33
import java.util.List;
33
import java.util.Set;
34
import java.util.Set;
Lines 104-109 Link Here
104
      detachedObjects.add(in.readCDOID());
105
      detachedObjects.add(in.readCDOID());
105
    }
106
    }
106
107
107
    session.handleCommitNotification(timeStamp, dirtyOIDs, detachedObjects, deltas, null);
108
    session.handleCommitNotification(timeStamp, Arrays.asList(packageUnits), dirtyOIDs, detachedObjects, deltas, null);
108
  }
109
  }
109
}
110
}
(-)src/org/eclipse/emf/internal/cdo/transaction/CDOTransactionImpl.java (-1 / +2 lines)
Lines 1305-1311 Link Here
1305
              ((InternalCDORevisionDelta)dirtyObjectDelta).adjustReferences(result.getReferenceAdjuster());
1305
              ((InternalCDORevisionDelta)dirtyObjectDelta).adjustReferences(result.getReferenceAdjuster());
1306
            }
1306
            }
1307
1307
1308
            session.handleCommitNotification(timeStamp, dirtyIDs, detachedIDs, deltasCopy, getTransaction());
1308
            session.handleCommitNotification(timeStamp, newPackageUnits, dirtyIDs, detachedIDs, deltasCopy,
1309
                getTransaction());
1309
          }
1310
          }
1310
1311
1311
          lastCommitTime = timeStamp;
1312
          lastCommitTime = timeStamp;
(-)src/org/eclipse/emf/spi/cdo/InternalCDOSession.java (-3 / +6 lines)
Lines 14-19 Link Here
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
14
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
15
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
15
import org.eclipse.emf.cdo.common.id.CDOIDObjectFactory;
16
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
16
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
17
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
17
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
18
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
18
import org.eclipse.emf.cdo.session.CDOSession;
19
import org.eclipse.emf.cdo.session.CDOSession;
19
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
20
import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry;
Lines 38-45 Link Here
38
39
39
  public void viewDetached(InternalCDOView view);
40
  public void viewDetached(InternalCDOView view);
40
41
41
  public void handleCommitNotification(long timeStamp, Set<CDOIDAndVersion> dirtyOIDs,
42
  public void handleCommitNotification(long timeStamp, Collection<CDOPackageUnit> newPackageUnits,
42
      Collection<CDOID> detachedObjects, Collection<CDORevisionDelta> deltas, InternalCDOView excludedView);
43
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects, Collection<CDORevisionDelta> deltas,
44
      InternalCDOView excludedView);
43
45
44
  public void handleSyncResponse(long timestamp, Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects);
46
  public void handleSyncResponse(long timestamp, Collection<CDOPackageUnit> newPackageUnits,
47
      Set<CDOIDAndVersion> dirtyOIDs, Collection<CDOID> detachedObjects);
45
}
48
}
(-)src/org/eclipse/emf/cdo/session/CDOSessionInvalidationEvent.java (+7 lines)
Lines 14-19 Link Here
14
import org.eclipse.emf.cdo.CDOInvalidationNotification;
14
import org.eclipse.emf.cdo.CDOInvalidationNotification;
15
import org.eclipse.emf.cdo.common.id.CDOID;
15
import org.eclipse.emf.cdo.common.id.CDOID;
16
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
16
import org.eclipse.emf.cdo.common.id.CDOIDAndVersion;
17
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
17
import org.eclipse.emf.cdo.common.revision.CDORevision;
18
import org.eclipse.emf.cdo.common.revision.CDORevision;
18
import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
19
import org.eclipse.emf.cdo.view.CDOAdapterPolicy;
19
import org.eclipse.emf.cdo.view.CDOView;
20
import org.eclipse.emf.cdo.view.CDOView;
Lines 58-61 Link Here
58
   * Returns a collection of the {@link CDOID CDOIDs} of the removed objects.
59
   * Returns a collection of the {@link CDOID CDOIDs} of the removed objects.
59
   */
60
   */
60
  public Collection<CDOID> getDetachedObjects();
61
  public Collection<CDOID> getDetachedObjects();
62
63
  /**
64
   * Returns a collection of the new {@link CDOPackageUnit}.
65
   */
66
  public Collection<CDOPackageUnit> getNewPackageUnits();
67
61
}
68
}

Return to bug 267050