diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java | 79 |
1 files changed, 43 insertions, 36 deletions
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java index 3ce55f051c..1a48f1f554 100644 --- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java +++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/protocol/CommitTransactionRequest.java @@ -67,6 +67,49 @@ public class CommitTransactionRequest extends CDOClientRequest<CommitTransaction writeDirtyObjects(out); } + @Override + protected CommitTransactionResult confirming(ExtendedDataInputStream in) throws IOException + { + boolean success = in.readBoolean(); + if (!success) + { + String rollbackMessage = in.readString(); + return new CommitTransactionResult(rollbackMessage); + } + + long timeStamp = in.readLong(); + CommitTransactionResult result = new CommitTransactionResult(timeStamp); + + List<CDOPackage> newPackages = transaction.getNewPackages(); + for (CDOPackage newPackage : newPackages) + { + CDOIDRange oldRange = newPackage.getMetaIDRange(); + CDOIDRange newRange = CDOIDRangeImpl.read(in); + ((CDOPackageImpl)newPackage).setMetaIDRange(newRange); + for (long i = 0; i < oldRange.getCount(); i++) + { + CDOID oldID = oldRange.get(i); + CDOID newID = newRange.get(i); + transaction.getSession().remapMetaInstance(oldID, newID); + result.addIDMapping(oldID, newID); + } + } + + for (;;) + { + CDOID oldID = CDOIDImpl.read(in); + if (oldID.isNull()) + { + break; + } + + CDOID newID = CDOIDImpl.read(in); + result.addIDMapping(oldID, newID); + } + + return result; + } + private void writeNewPackages(ExtendedDataOutputStream out) throws IOException { List<CDOPackage> newPackages = transaction.getNewPackages(); @@ -125,40 +168,4 @@ public class CommitTransactionRequest extends CDOClientRequest<CommitTransaction revision.write(out, transaction, CDORevision.UNCHUNKED); } } - - @Override - protected CommitTransactionResult confirming(ExtendedDataInputStream in) throws IOException - { - long timeStamp = in.readLong(); - CommitTransactionResult result = new CommitTransactionResult(timeStamp); - - List<CDOPackage> newPackages = transaction.getNewPackages(); - for (CDOPackage newPackage : newPackages) - { - CDOIDRange oldRange = newPackage.getMetaIDRange(); - CDOIDRange newRange = CDOIDRangeImpl.read(in); - ((CDOPackageImpl)newPackage).setMetaIDRange(newRange); - for (long i = 0; i < oldRange.getCount(); i++) - { - CDOID oldID = oldRange.get(i); - CDOID newID = newRange.get(i); - transaction.getSession().remapMetaInstance(oldID, newID); - result.addIDMapping(oldID, newID); - } - } - - for (;;) - { - CDOID oldID = CDOIDImpl.read(in); - if (oldID.isNull()) - { - break; - } - - CDOID newID = CDOIDImpl.read(in); - result.addIDMapping(oldID, newID); - } - - return result; - } } |