View | Details | Raw Unified | Return to bug 214752 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/emf/internal/cdo/CDORevisionManagerImpl.java (-20 lines)
Lines 17-23 Link Here
17
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl.MoveableList;
17
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl.MoveableList;
18
import org.eclipse.emf.cdo.protocol.CDOID;
18
import org.eclipse.emf.cdo.protocol.CDOID;
19
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
19
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
20
import org.eclipse.emf.cdo.protocol.revision.CDODuplicateRevisionException;
21
import org.eclipse.emf.cdo.protocol.revision.CDOReferenceProxy;
20
import org.eclipse.emf.cdo.protocol.revision.CDOReferenceProxy;
22
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
21
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
23
import org.eclipse.emf.cdo.protocol.util.TransportException;
22
import org.eclipse.emf.cdo.protocol.util.TransportException;
Lines 29-35 Link Here
29
import org.eclipse.emf.internal.cdo.protocol.LoadRevisionRequest;
28
import org.eclipse.emf.internal.cdo.protocol.LoadRevisionRequest;
30
29
31
import org.eclipse.net4j.channel.IChannel;
30
import org.eclipse.net4j.channel.IChannel;
32
import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
33
import org.eclipse.net4j.internal.util.om.trace.PerfTracer;
31
import org.eclipse.net4j.internal.util.om.trace.PerfTracer;
34
import org.eclipse.net4j.signal.failover.IFailOverStrategy;
32
import org.eclipse.net4j.signal.failover.IFailOverStrategy;
35
33
Lines 42-49 Link Here
42
 */
40
 */
43
public class CDORevisionManagerImpl extends CDORevisionResolverImpl implements CDORevisionManager
41
public class CDORevisionManagerImpl extends CDORevisionResolverImpl implements CDORevisionManager
44
{
42
{
45
  private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_REVISION, CDORevisionManagerImpl.class);
46
47
  private static final PerfTracer LOADING = new PerfTracer(OM.PERF_REVISION_LOADING, CDORevisionManagerImpl.class);
43
  private static final PerfTracer LOADING = new PerfTracer(OM.PERF_REVISION_LOADING, CDORevisionManagerImpl.class);
48
44
49
  private CDOSessionImpl session;
45
  private CDOSessionImpl session;
Lines 60-81 Link Here
60
    return session;
56
    return session;
61
  }
57
  }
62
58
63
  @Override
64
  public void addRevision(CDORevisionImpl revision) throws CDODuplicateRevisionException
65
  {
66
    try
67
    {
68
      super.addRevision(revision);
69
    }
70
    catch (CDODuplicateRevisionException ignore)
71
    {
72
      if (TRACER.isEnabled())
73
      {
74
        TRACER.trace("Ignorable exception on client side", ignore);
75
      }
76
    }
77
  }
78
79
  public CDOID resolveReferenceProxy(CDOReferenceProxy referenceProxy)
59
  public CDOID resolveReferenceProxy(CDOReferenceProxy referenceProxy)
80
  {
60
  {
81
    // Get proxy values
61
    // Get proxy values
(-)src/org/eclipse/emf/cdo/internal/server/RevisionManager.java (-11 / +10 lines)
Lines 21-27 Link Here
21
import org.eclipse.emf.cdo.internal.protocol.revision.delta.CDORevisionDeltaImpl;
21
import org.eclipse.emf.cdo.internal.protocol.revision.delta.CDORevisionDeltaImpl;
22
import org.eclipse.emf.cdo.protocol.CDOID;
22
import org.eclipse.emf.cdo.protocol.CDOID;
23
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
23
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
24
import org.eclipse.emf.cdo.protocol.revision.CDODuplicateRevisionException;
25
import org.eclipse.emf.cdo.protocol.revision.CDOReferenceProxy;
24
import org.eclipse.emf.cdo.protocol.revision.CDOReferenceProxy;
26
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
25
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
27
import org.eclipse.emf.cdo.server.IRevisionManager;
26
import org.eclipse.emf.cdo.server.IRevisionManager;
Lines 316-321 Link Here
316
315
317
    public void phase1(IStoreWriter storeWriter) throws Exception
316
    public void phase1(IStoreWriter storeWriter) throws Exception
318
    {
317
    {
318
      CDOID id = revisionDelta.getID();
319
      if (getRepository().isSupportingRevisionDeltas())
319
      if (getRepository().isSupportingRevisionDeltas())
320
      {
320
      {
321
        // Can throw an exception if duplicate
321
        // Can throw an exception if duplicate
Lines 323-330 Link Here
323
      }
323
      }
324
      else
324
      else
325
      {
325
      {
326
        CDORevisionImpl oldRevision = getRevisionByVersion(revisionDelta.getID(), CDORevision.UNCHUNKED, revisionDelta
326
        int originVersion = revisionDelta.getOriginVersion();
327
            .getOriginVersion(), true);
327
        CDORevisionImpl oldRevision = getRevisionByVersion(id, CDORevision.UNCHUNKED, originVersion, true);
328
        if (oldRevision == null)
328
        if (oldRevision == null)
329
        {
329
        {
330
          throw new IllegalArgumentException("Cannot retrieve origin revision");
330
          throw new IllegalArgumentException("Cannot retrieve origin revision");
Lines 337-350 Link Here
337
        storeWriter.writeRevision(dirtyRevision);
337
        storeWriter.writeRevision(dirtyRevision);
338
      }
338
      }
339
339
340
      // Look if we already have it in our cache revision
340
      // // Look if we already have it in our cache revision
341
      CDORevisionImpl currentVersion = getRevisionByVersion(revisionDelta.getID(), 0, revisionDelta.getDirtyVersion(),
341
      // int dirtyVersion = revisionDelta.getDirtyVersion();
342
          false);
342
      // CDORevisionImpl currentVersion = getRevisionByVersion(id, 0, dirtyVersion, false);
343
343
      // if (currentVersion != null)
344
      if (currentVersion != null)
344
      // {
345
      {
345
      // throw new CDODuplicateRevisionException(currentVersion);
346
        throw new CDODuplicateRevisionException(currentVersion);
346
      // }
347
      }
348
    }
347
    }
349
348
350
    public void phase2(IStoreWriter storeWriter)
349
    public void phase2(IStoreWriter storeWriter)
(-)src/org/eclipse/emf/cdo/internal/server/MEMStoreAccessor.java (-10 / +12 lines)
Lines 18-25 Link Here
18
import org.eclipse.emf.cdo.protocol.model.CDOClassRef;
18
import org.eclipse.emf.cdo.protocol.model.CDOClassRef;
19
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
19
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
20
import org.eclipse.emf.cdo.protocol.model.CDOPackageInfo;
20
import org.eclipse.emf.cdo.protocol.model.CDOPackageInfo;
21
import org.eclipse.emf.cdo.protocol.revision.CDODuplicateRevisionException;
22
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
21
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
22
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
23
import org.eclipse.emf.cdo.server.ISession;
23
import org.eclipse.emf.cdo.server.ISession;
24
import org.eclipse.emf.cdo.server.IStoreChunkReader;
24
import org.eclipse.emf.cdo.server.IStoreChunkReader;
25
import org.eclipse.emf.cdo.server.IStoreReader;
25
import org.eclipse.emf.cdo.server.IStoreReader;
Lines 85-91 Link Here
85
  public CDORevision readRevision(CDOID id, int referenceChunk)
85
  public CDORevision readRevision(CDOID id, int referenceChunk)
86
  {
86
  {
87
    CDORevisionImpl revStore = (CDORevisionImpl)getStore().getRevision(id);
87
    CDORevisionImpl revStore = (CDORevisionImpl)getStore().getRevision(id);
88
    CDORevisionImpl newRevision = new CDORevisionImpl(this.getStore().getRepository().getRevisionManager(), revStore
88
    CDORevisionImpl newRevision = new CDORevisionImpl(getStore().getRepository().getRevisionManager(), revStore
89
        .getCDOClass(), revStore.getID());
89
        .getCDOClass(), revStore.getID());
90
    newRevision.setResourceID(revStore.getResourceID());
90
    newRevision.setResourceID(revStore.getResourceID());
91
91
Lines 127-147 Link Here
127
  {
127
  {
128
  }
128
  }
129
129
130
  public void writeRevision(CDORevisionImpl revision)
130
  public void writeRevision(CDORevisionImpl revision) throws DuplicateRevisionException
131
  {
131
  {
132
    getStore().addRevision(revision);
132
    getStore().addRevision(revision);
133
  }
133
  }
134
134
135
  @Override
135
  @Override
136
  public void writeRevisionDelta(CDORevisionDeltaImpl delta)
136
  public void writeRevisionDelta(CDORevisionDeltaImpl delta) throws DuplicateRevisionException
137
  {
137
  {
138
    CDORevisionImpl revision2 = (CDORevisionImpl)getStore().getRevision(delta.getID());
138
    CDORevisionImpl revision = (CDORevisionImpl)getStore().getRevision(delta.getID());
139
    if (delta.getOriginVersion() != revision2.getVersion())
139
    if (delta.getOriginVersion() != revision.getVersion())
140
    {
140
    {
141
      throw new CDODuplicateRevisionException(revision2);
141
      throw new DuplicateRevisionException(revision);
142
    }
142
    }
143
143
144
    CDORevisionImpl newRevision = new CDORevisionImpl(revision2);
144
    CDORevisionImpl newRevision = new CDORevisionImpl(revision);
145
    delta.apply(newRevision);
145
    delta.apply(newRevision);
146
    listToCommit.add(newRevision);
146
    listToCommit.add(newRevision);
147
  }
147
  }
Lines 149-156 Link Here
149
  @Override
149
  @Override
150
  public void release()
150
  public void release()
151
  {
151
  {
152
    for (CDORevisionImpl rev : listToCommit)
152
    for (CDORevisionImpl revision : listToCommit)
153
      getStore().addRevision(rev);
153
    {
154
      getStore().addRevision(revision);
155
    }
154
  }
156
  }
155
157
156
  public void rollback(IView view, ITransaction<IStoreWriter> storeTransaction)
158
  public void rollback(IView view, ITransaction<IStoreWriter> storeTransaction)
(-)src/org/eclipse/emf/cdo/internal/server/StoreAccessor.java (-1 / +2 lines)
Lines 15-20 Link Here
15
import org.eclipse.emf.cdo.internal.protocol.revision.delta.CDORevisionDeltaImpl;
15
import org.eclipse.emf.cdo.internal.protocol.revision.delta.CDORevisionDeltaImpl;
16
import org.eclipse.emf.cdo.protocol.CDOID;
16
import org.eclipse.emf.cdo.protocol.CDOID;
17
import org.eclipse.emf.cdo.protocol.model.CDOClass;
17
import org.eclipse.emf.cdo.protocol.model.CDOClass;
18
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
18
import org.eclipse.emf.cdo.server.ISession;
19
import org.eclipse.emf.cdo.server.ISession;
19
import org.eclipse.emf.cdo.server.IStoreAccessor;
20
import org.eclipse.emf.cdo.server.IStoreAccessor;
20
import org.eclipse.emf.cdo.server.IView;
21
import org.eclipse.emf.cdo.server.IView;
Lines 91-97 Link Here
91
    return store.getNextCDOID();
92
    return store.getNextCDOID();
92
  }
93
  }
93
94
94
  public void writeRevisionDelta(CDORevisionDeltaImpl delta)
95
  public void writeRevisionDelta(CDORevisionDeltaImpl delta) throws DuplicateRevisionException
95
  {
96
  {
96
    throw new UnsupportedOperationException();
97
    throw new UnsupportedOperationException();
97
  }
98
  }
(-)src/org/eclipse/emf/cdo/internal/server/NOOPStoreAccessor.java (-1 / +2 lines)
Lines 17-22 Link Here
17
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
17
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
18
import org.eclipse.emf.cdo.protocol.model.CDOPackageInfo;
18
import org.eclipse.emf.cdo.protocol.model.CDOPackageInfo;
19
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
19
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
20
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
20
import org.eclipse.emf.cdo.server.ISession;
21
import org.eclipse.emf.cdo.server.ISession;
21
import org.eclipse.emf.cdo.server.IStoreChunkReader;
22
import org.eclipse.emf.cdo.server.IStoreChunkReader;
22
import org.eclipse.emf.cdo.server.IStoreReader;
23
import org.eclipse.emf.cdo.server.IStoreReader;
Lines 104-110 Link Here
104
  {
105
  {
105
  }
106
  }
106
107
107
  public void writeRevision(CDORevisionImpl revision)
108
  public void writeRevision(CDORevisionImpl revision) throws DuplicateRevisionException
108
  {
109
  {
109
  }
110
  }
110
111
(-)src/org/eclipse/emf/cdo/server/IStoreWriter.java (-2 / +2 lines)
Lines 46-54 Link Here
46
   */
46
   */
47
  public void writePackages(CDOPackageImpl... cdoPackages);
47
  public void writePackages(CDOPackageImpl... cdoPackages);
48
48
49
  public void writeRevision(CDORevisionImpl revision);
49
  public void writeRevision(CDORevisionImpl revision) throws DuplicateRevisionException;
50
50
51
  public void writeRevisionDelta(CDORevisionDeltaImpl delta);
51
  public void writeRevisionDelta(CDORevisionDeltaImpl delta) throws DuplicateRevisionException;
52
52
53
  public CDOID primeNewObject(CDOClass cdoClass);
53
  public CDOID primeNewObject(CDOClass cdoClass);
54
54
(-)src/org/eclipse/emf/cdo/server/DuplicateRevisionException.java (+41 lines)
Added Link Here
1
/***************************************************************************
2
 * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
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
 *    Eike Stepper - initial API and implementation
10
 **************************************************************************/
11
package org.eclipse.emf.cdo.server;
12
13
import org.eclipse.emf.cdo.protocol.revision.CDORevision;
14
import org.eclipse.emf.cdo.protocol.util.CDOException;
15
16
/**
17
 * @author Eike Stepper
18
 */
19
public class DuplicateRevisionException extends CDOException
20
{
21
  private static final long serialVersionUID = 1L;
22
23
  private CDORevision revision;
24
25
  public DuplicateRevisionException(CDORevision revision)
26
  {
27
    super(revision.toString());
28
    this.revision = revision;
29
  }
30
31
  public DuplicateRevisionException(CDORevision revision, Throwable cause)
32
  {
33
    super(revision.toString(), cause);
34
    this.revision = revision;
35
  }
36
37
  public CDORevision getRevision()
38
  {
39
    return revision;
40
  }
41
}
(-)src/org/eclipse/emf/cdo/server/internal/db/HorizontalClassMapping.java (-1 / +2 lines)
Lines 13-18 Link Here
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
14
import org.eclipse.emf.cdo.protocol.CDOID;
14
import org.eclipse.emf.cdo.protocol.CDOID;
15
import org.eclipse.emf.cdo.protocol.model.CDOClass;
15
import org.eclipse.emf.cdo.protocol.model.CDOClass;
16
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
16
import org.eclipse.emf.cdo.server.db.IDBStoreWriter;
17
import org.eclipse.emf.cdo.server.db.IDBStoreWriter;
17
18
18
/**
19
/**
Lines 32-38 Link Here
32
  }
33
  }
33
34
34
  @Override
35
  @Override
35
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision)
36
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision) throws DuplicateRevisionException
36
  {
37
  {
37
    super.writeRevision(storeWriter, revision);
38
    super.writeRevision(storeWriter, revision);
38
    if (revision.getVersion() == 1)
39
    if (revision.getVersion() == 1)
(-)src/org/eclipse/emf/cdo/server/internal/db/ClassMapping.java (-3 / +18 lines)
Lines 16-21 Link Here
16
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
16
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
17
import org.eclipse.emf.cdo.protocol.model.CDOType;
17
import org.eclipse.emf.cdo.protocol.model.CDOType;
18
import org.eclipse.emf.cdo.protocol.model.resource.CDOResourceClass;
18
import org.eclipse.emf.cdo.protocol.model.resource.CDOResourceClass;
19
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
19
import org.eclipse.emf.cdo.server.db.IAttributeMapping;
20
import org.eclipse.emf.cdo.server.db.IAttributeMapping;
20
import org.eclipse.emf.cdo.server.db.IClassMapping;
21
import org.eclipse.emf.cdo.server.db.IClassMapping;
21
import org.eclipse.emf.cdo.server.db.IDBStore;
22
import org.eclipse.emf.cdo.server.db.IDBStore;
Lines 436-442 Link Here
436
437
437
  protected abstract boolean hasFullRevisionInfo();
438
  protected abstract boolean hasFullRevisionInfo();
438
439
439
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision)
440
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision) throws DuplicateRevisionException
440
  {
441
  {
441
    if (revision.getVersion() >= 2 && hasFullRevisionInfo())
442
    if (revision.getVersion() >= 2 && hasFullRevisionInfo())
442
    {
443
    {
Lines 455-460 Link Here
455
  }
456
  }
456
457
457
  protected void writeRevisedRow(IDBStoreWriter storeWriter, CDORevisionImpl revision)
458
  protected void writeRevisedRow(IDBStoreWriter storeWriter, CDORevisionImpl revision)
459
      throws DuplicateRevisionException
458
  {
460
  {
459
    StringBuilder builder = new StringBuilder();
461
    StringBuilder builder = new StringBuilder();
460
    builder.append("UPDATE ");
462
    builder.append("UPDATE ");
Lines 471-477 Link Here
471
    builder.append(CDODBSchema.ATTRIBUTES_VERSION);
473
    builder.append(CDODBSchema.ATTRIBUTES_VERSION);
472
    builder.append("=");
474
    builder.append("=");
473
    builder.append(revision.getVersion() - 1);
475
    builder.append(revision.getVersion() - 1);
474
    sqlUpdate(storeWriter, builder.toString());
476
    String sql = builder.toString();
477
478
    try
479
    {
480
      sqlUpdate(storeWriter, sql);
481
    }
482
    catch (DBException ex)
483
    {
484
      // TODO Handle DBException more selectively
485
      throw new DuplicateRevisionException(revision, ex);
486
    }
475
  }
487
  }
476
488
477
  protected void writeAttributes(IDBStoreWriter storeWriter, CDORevisionImpl revision)
489
  protected void writeAttributes(IDBStoreWriter storeWriter, CDORevisionImpl revision)
Lines 556-562 Link Here
556
    }
568
    }
557
569
558
    String sql = builder.toString();
570
    String sql = builder.toString();
559
    if (TRACER.isEnabled()) TRACER.trace(sql);
571
    if (TRACER.isEnabled())
572
    {
573
      TRACER.trace(sql);
574
    }
560
    ResultSet resultSet = null;
575
    ResultSet resultSet = null;
561
576
562
    try
577
    try
(-)src/org/eclipse/emf/cdo/server/internal/db/VerticalClassMapping.java (-1 / +2 lines)
Lines 12-17 Link Here
12
12
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
15
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
15
import org.eclipse.emf.cdo.server.db.IClassMapping;
16
import org.eclipse.emf.cdo.server.db.IClassMapping;
16
import org.eclipse.emf.cdo.server.db.IDBStoreWriter;
17
import org.eclipse.emf.cdo.server.db.IDBStoreWriter;
17
18
Lines 61-67 Link Here
61
  }
62
  }
62
63
63
  @Override
64
  @Override
64
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision)
65
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision) throws DuplicateRevisionException
65
  {
66
  {
66
    super.writeRevision(storeWriter, revision);
67
    super.writeRevision(storeWriter, revision);
67
    if (superMappings != null)
68
    if (superMappings != null)
(-)src/org/eclipse/emf/cdo/server/internal/db/NoClassMapping.java (-1 / +2 lines)
Lines 13-18 Link Here
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
15
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
15
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
16
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
16
import org.eclipse.emf.cdo.server.db.IAttributeMapping;
17
import org.eclipse.emf.cdo.server.db.IAttributeMapping;
17
import org.eclipse.emf.cdo.server.db.IClassMapping;
18
import org.eclipse.emf.cdo.server.db.IClassMapping;
18
import org.eclipse.emf.cdo.server.db.IDBStoreReader;
19
import org.eclipse.emf.cdo.server.db.IDBStoreReader;
Lines 77-83 Link Here
77
    return null;
78
    return null;
78
  }
79
  }
79
80
80
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision)
81
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision) throws DuplicateRevisionException
81
  {
82
  {
82
  }
83
  }
83
84
(-)src/org/eclipse/emf/cdo/server/internal/db/DBStoreWriter.java (-1 / +2 lines)
Lines 16-21 Link Here
16
import org.eclipse.emf.cdo.internal.protocol.model.CDOPackageImpl;
16
import org.eclipse.emf.cdo.internal.protocol.model.CDOPackageImpl;
17
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
17
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
18
import org.eclipse.emf.cdo.protocol.CDOIDRange;
18
import org.eclipse.emf.cdo.protocol.CDOIDRange;
19
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
19
import org.eclipse.emf.cdo.server.IStoreWriter;
20
import org.eclipse.emf.cdo.server.IStoreWriter;
20
import org.eclipse.emf.cdo.server.IView;
21
import org.eclipse.emf.cdo.server.IView;
21
import org.eclipse.emf.cdo.server.db.IClassMapping;
22
import org.eclipse.emf.cdo.server.db.IClassMapping;
Lines 181-187 Link Here
181
        type, packageURI, classifierID, many, containment, idx);
182
        type, packageURI, classifierID, many, containment, idx);
182
  }
183
  }
183
184
184
  public void writeRevision(CDORevisionImpl revision)
185
  public void writeRevision(CDORevisionImpl revision) throws DuplicateRevisionException
185
  {
186
  {
186
    if (TRACER.isEnabled())
187
    if (TRACER.isEnabled())
187
    {
188
    {
(-)src/org/eclipse/emf/cdo/server/db/IClassMapping.java (-1 / +2 lines)
Lines 13-18 Link Here
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
13
import org.eclipse.emf.cdo.internal.protocol.revision.CDORevisionImpl;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
14
import org.eclipse.emf.cdo.protocol.model.CDOClass;
15
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
15
import org.eclipse.emf.cdo.protocol.model.CDOFeature;
16
import org.eclipse.emf.cdo.server.DuplicateRevisionException;
16
17
17
import org.eclipse.net4j.db.ddl.IDBTable;
18
import org.eclipse.net4j.db.ddl.IDBTable;
18
19
Lines 40-46 Link Here
40
41
41
  public IReferenceMapping getReferenceMapping(CDOFeature feature);
42
  public IReferenceMapping getReferenceMapping(CDOFeature feature);
42
43
43
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision);
44
  public void writeRevision(IDBStoreWriter storeWriter, CDORevisionImpl revision) throws DuplicateRevisionException;
44
45
45
  public void readRevision(IDBStoreReader storeReader, CDORevisionImpl revision, int referenceChunk);
46
  public void readRevision(IDBStoreReader storeReader, CDORevisionImpl revision, int referenceChunk);
46
47
(-)src/org/eclipse/emf/cdo/internal/protocol/revision/CDORevisionResolverImpl.java (-7 / +7 lines)
Lines 14-20 Link Here
14
import org.eclipse.emf.cdo.internal.protocol.bundle.OM;
14
import org.eclipse.emf.cdo.internal.protocol.bundle.OM;
15
import org.eclipse.emf.cdo.protocol.CDOID;
15
import org.eclipse.emf.cdo.protocol.CDOID;
16
import org.eclipse.emf.cdo.protocol.model.CDOClass;
16
import org.eclipse.emf.cdo.protocol.model.CDOClass;
17
import org.eclipse.emf.cdo.protocol.revision.CDODuplicateRevisionException;
18
import org.eclipse.emf.cdo.protocol.revision.CDORevisionResolver;
17
import org.eclipse.emf.cdo.protocol.revision.CDORevisionResolver;
19
18
20
import org.eclipse.net4j.internal.util.lifecycle.Lifecycle;
19
import org.eclipse.net4j.internal.util.lifecycle.Lifecycle;
Lines 122-134 Link Here
122
        missingIDs.add(id);
121
        missingIDs.add(id);
123
      }
122
      }
124
    }
123
    }
125
  
124
126
    if (!missingIDs.isEmpty())
125
    if (!missingIDs.isEmpty())
127
    {
126
    {
128
      List<CDORevisionImpl> missingRevisions = loadRevisions(missingIDs, referenceChunk);
127
      List<CDORevisionImpl> missingRevisions = loadRevisions(missingIDs, referenceChunk);
129
      handleMissingRevisions(revisions, missingRevisions);
128
      handleMissingRevisions(revisions, missingRevisions);
130
    }
129
    }
131
  
130
132
    return revisions;
131
    return revisions;
133
  }
132
  }
134
133
Lines 150-162 Link Here
150
        missingIDs.add(id);
149
        missingIDs.add(id);
151
      }
150
      }
152
    }
151
    }
153
  
152
154
    if (!missingIDs.isEmpty())
153
    if (!missingIDs.isEmpty())
155
    {
154
    {
156
      List<CDORevisionImpl> missingRevisions = loadRevisions(missingIDs, referenceChunk);
155
      List<CDORevisionImpl> missingRevisions = loadRevisions(missingIDs, referenceChunk);
157
      handleMissingRevisions(revisions, missingRevisions);
156
      handleMissingRevisions(revisions, missingRevisions);
158
    }
157
    }
159
  
158
160
    return revisions;
159
    return revisions;
161
  }
160
  }
162
161
Lines 199-205 Link Here
199
    return null;
198
    return null;
200
  }
199
  }
201
200
202
  public void addRevision(CDORevisionImpl revision) throws CDODuplicateRevisionException
201
  public boolean addRevision(CDORevisionImpl revision)
203
  {
202
  {
204
    if (TRACER.isEnabled())
203
    if (TRACER.isEnabled())
205
    {
204
    {
Lines 225-231 Link Here
225
      }
224
      }
226
      else if (holderVersion == version)
225
      else if (holderVersion == version)
227
      {
226
      {
228
        throw new CDODuplicateRevisionException(revision);
227
        return false;
229
      }
228
      }
230
      else
229
      else
231
      {
230
      {
Lines 234-239 Link Here
234
    }
233
    }
235
234
236
    adjustHolder(revision, newHolder, lastHolder, holder);
235
    adjustHolder(revision, newHolder, lastHolder, holder);
236
    return true;
237
  }
237
  }
238
238
239
  protected CDORevisionImpl getRevision(CDOID id, int referenceChunk, boolean loadOnDemand)
239
  protected CDORevisionImpl getRevision(CDOID id, int referenceChunk, boolean loadOnDemand)
(-)src/org/eclipse/emf/cdo/protocol/revision/CDODuplicateRevisionException.java (-34 lines)
Removed Link Here
1
/***************************************************************************
2
 * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
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
 *    Eike Stepper - initial API and implementation
10
 **************************************************************************/
11
package org.eclipse.emf.cdo.protocol.revision;
12
13
import org.eclipse.emf.cdo.protocol.util.CDOException;
14
15
/**
16
 * @author Eike Stepper
17
 */
18
public class CDODuplicateRevisionException extends CDOException
19
{
20
  private static final long serialVersionUID = 1L;
21
22
  private CDORevision revision;
23
24
  public CDODuplicateRevisionException(CDORevision revision)
25
  {
26
    super(revision.toString());
27
    this.revision = revision;
28
  }
29
30
  public CDORevision getRevision()
31
  {
32
    return revision;
33
  }
34
}

Return to bug 214752